Announcement

Collapse
No announcement yet.

Router7: A Home Internet Router Platform Written Entirely In Golang

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Router7: A Home Internet Router Platform Written Entirely In Golang

    Phoronix: Router7: A Home Internet Router Platform Written Entirely In Golang

    Following Friday's release of Go 1.11, a Phoronix reader pointed out a new open-source Internet router software package written entirely in Go...

    http://www.phoronix.com/scan.php?pag...-Golang-Router

  • #2
    Hm, do I understand this correctly - he developed an entirely new router software stack just because his previous router's DHCP setup was slightly incompatible with his service provider's requirements?

    Comment


    • #3
      Originally posted by msotirov View Post
      Hm, do I understand this correctly - he developed an entirely new router software stack just because his previous router's DHCP setup was slightly incompatible with his service provider's requirements?
      To be fair, he probably started with DHCP (which is easy enough at the small scale) and went on from there, not realising the scope was creeping :P

      Comment


      • #4
        Meh ... I am happy with OPNsense right here, no way I am GO'ing for that!

        http://www.dirtcellar.net

        Comment


        • #5
          Typos:

          Originally posted by phoronix View Post
          This Router7 software is written entiely in Golang
          Originally posted by phoronix View Post
          can learn more at rotuer7 on GitHub.

          Comment


          • #6
            Not to take anything away from the project but just for the sake of clarity:

            This project implements a router running on top of Linux. Most of the heavy lifting is done in the Linux kernel. Routing, NAT, port forwarding, interface management, etc.

            This project implements a dhcp client and server, a dns server, route advertisement, a front-end interface to manage it all, and some other bits. That's absolutely a lot of stuff and the right way to do it, but the title implies that the Go software might be doing more than it is.

            I would use FreeNAS as a comparison, as it is in similar situation. It runs on top of FreeBSD and utilizes features of the kernel to do the heavy lifting. Nobody would think to say that FreeNAS is written entirely in Python, even though the part that you interact with is, and it implements a lot of things that would normally be done elsewhere.

            Again, this is a great project and don't take this as a negative statement, I just think the description is misleading. A router platform written entirely in Go would run on any platform Go runs on.

            Comment


            • #7
              Originally posted by squash View Post
              This project implements a router running on top of Linux. Most of the heavy lifting is done in the Linux kernel. Routing, NAT, port forwarding, interface management, etc.

              This project implements a dhcp client and server, a dns server, route advertisement, a front-end interface to manage it all, and some other bits. That's absolutely a lot of stuff and the right way to do it, but the title implies that the Go software might be doing more than it is.

              I would use FreeNAS as a comparison, as it is in similar situation. It runs on top of FreeBSD and utilizes features of the kernel to do the heavy lifting. Nobody would think to say that FreeNAS is written entirely in Python, even though the part that you interact with is, and it implements a lot of things that would normally be done elsewhere.
              Technically speaking, FreeNAS does not compare like one bit, as I'm pretty sure they DO NOT have all userspace replaced by python scripts. They have quite a bit of things that are not kernel nor user interface.

              While Router7 appears to be replacing all userspace of networking devices with things written in Go.

              I agree that the article is a bit on the heavy side though, but I'll allow that, this is cool.

              Comment


              • #8
                Originally posted by msotirov View Post
                Hm, do I understand this correctly - he developed an entirely new router software stack just because his previous router's DHCP setup was slightly incompatible with his service provider's requirements?
                That's the official excuse, for the wife and such. We all know why he did it.

                Comment


                • #9
                  Originally posted by starshipeleven View Post
                  Technically speaking, FreeNAS does not compare like one bit, as I'm pretty sure they DO NOT have all userspace replaced by python scripts. They have quite a bit of things that are not kernel nor user interface.

                  While Router7 appears to be replacing all userspace of networking devices with things written in Go.

                  I agree that the article is a bit on the heavy side though, but I'll allow that, this is cool.
                  Again, most of what they're doing in the application is using kernel interfaces to configure kernel services. While there isn't much else going on, most of the heavy lifting is just standard Linux functionality built into the kernel.

                  The comparison with FreeNAS is apt not because I'm claiming that there isn't an entire userland (its a nbasic freebsd install after all) but that it's another example of software that configures services rather than provides them itself. FreeNAS is great but their python application isn't striping your data across disks and serving nfs clients. Similarly, router7 is great but the go application isn't moving packets between interfaces or analyzing traffic to decide what goes where. They both largely configure services that are provided otherwise.

                  Comment


                  • #10
                    Originally posted by squash View Post
                    Again, most of what they're doing in the application is using kernel interfaces to configure kernel services.
                    Yeah, my complaint was about the FreeNAS comparison.
                    FreeNAS is great but their python application isn't striping your data across disks and serving nfs clients.
                    FreeNAS has a normal FreeBSD userspace that uses to do basic stuff like chron jobs, start or stop services, do logging, run additional plugins/applications that may need dependencies installed, it can run docker images, and so on and so forth. Python is just used for the user interface, and overall FreeNAS isn't anywhere near a "thin layer just to configure the kernel".
                    Of course you can use it as a dumb storage appliance with a shared folder, but that's not really all it can do, it's a full-blown OS.

                    Router7 is an appliance that uses Go to provide DHCP and DNS service, some API to configure the firewall of Linux kernel and whatnot. There is no real way to expand it with modules or packages or containers or whatever, you can't run additional services as there is no process management of any kind, it's just a single application that is running on boot, as said in the parent project, Gokrazy https://github.com/gokrazy/gokrazy

                    It has more in common with an embedded device firmware or with a docker container than with a full OS. That's what I was pointing out.

                    Comment

                    Working...
                    X