10 ms·
GoBGP: BGP Implemented in Go
- dragonshed 10y agoI assume BGP == Border Gateway Protocol https://en.wikipedia.org/wiki/Border_Gateway_Protocol https://en.wikipedia.org/wiki/Border_Gateway_Protocol Suggestion: include a quick abstract what what BGP is with a link for more information.
- stingraycharles 10y agoI don't think this is necessary. If this is relevant to you, you will know exactly what it is, in the same way that GoDNS would be obvious to people who know what DNS is.
- mc808 10y agoYou can't get very far in life if you assume every acronym you encounter is irrelevant to you if you don't already know what it stands for.
- misframer 10y agoIs that necessary? I'm not sure how many people are unaware of what BGP is.
- jimbokun 10y agoI'm not aware what BGP is, clicked hoping to find out, was sorely disappointed.
- misframer 10y agoI guess it couldn't hurt then!
- harshreality 10y ago<ctrl-t> bgp <enter> A project page for a $language implementation of $protocol shouldn't be expected to give a basic description of $protocol. If you care about a new implementation, you already know what the protocol does, at least generally. If you're lucky, the project page links to a protocol description (possibly at wikipedia), or, as above, you can simply google it yourself and then decide whether a $language implementation of it is something you care about.
- npizzolato 10y agoI don't think it's a lot to ask for a readme to contain the full name of the acronym it's implementing and maybe a link to a wikipedia page. I mean, it already has a link to the golang website, but no mention of what BGP actually is.
- nickpsecurity 10y agoA quick Google solves that problem. Anyone that wouldn't do that much is unlikely to be valuable to the project. It's a nice filter at the least.
- arca_vorago 10y agoBah accidentally downvoted you nick, sorry. Since I downvoted though, I might as well play the game as if I had a reason (because it annoys me when people dv without a reason): I think the request for some basic information without forcing the reader to google/duckduckgo/wikipedia some of the most basic info (such as full name, basic description) is not too much to ask from a journalistic perspective and using it as a barrier is not a good thing for encouraging education. After all, there is a reason it's called the wikipedia rabbit hole, do you know how often I start with a quick search and suddenly it's an hour later and I've learned all about $something-other-than-originally-intended?
- nickpsecurity 10y agoIf i do it, I just load up comments of that person and upvote any decent comment tgey have. Cancels it out. On other issue, here's what typing BGP into Google gace me at the top: "Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routing and reachability information among autonomous systems (AS) on the Internet. The protocol is often classified as a path vector protocol but is sometimes also classed as a distance-vector routing protocol." Some things are hard to search for. Others, like BGP protocol, are so common you'll get it easily. Those can default on Google. Further, what use is a programmer going to be in robustly implementing the protocol if they can't figure that out? Hence the filter part. So, my position is more solid now that I Googled it.
- voidlogic 10y agoThis is just classic karma mongering by running Google for other people and posting the result. So no prob. not necessary. But it can be helpful for topics with ambiguous acronyms or tech. names (Apple) Swift vs. (OpenStack) Swift, for example.
- dragonshed 10y agoAddressing multiple comments here, but to your point specifically: I don't really care about karma. I would've preferred exactly what I recommended to the author, instead of spending the time to google it and posting a comment. In general: We can all be better teachers. Acknowledging that not everyone who writes code in Go shares the same background, training or interests is a good step to getting more people to use Go.
- LamaOfRuin 10y agoI was generally aware of what Border Gateway Protocol was, but it did not immediately spring to mind when I read BGP, and the full name is not mentioned in the repo readme.
- tptacek 10y agoIt's the routing protocol that computes paths between ISPs and their largest customers, and that associates ranges of IP addresses with those networks. Even if you're not a huge ISP, it's handy to have a BGP implementation available because you can use it to do network analytics and traffic management.
- fogleman 10y agoThis happens fairly often (projects assuming I know the tech they are built on), and I'm no dummy. I also clicked through several pages on the repo / site and there was no clue as to what BGP was, except some mention of RPC.
- devnull42 10y agoSo at the moment I see no reason why Go written BGP would be better than standard Quagga/Zebra. There aren't really concurrency or resource issues with large scale Quagga in my experience.
- tptacek 10y agoQuagga/Zebra is a giant C project. The industry is moving away, as much as it can, from serving critical infrastructure on giant C programs.
- Rapzid 10y agoI'm not aware of any trend in the area of routing/switching for linux away from C projects. nftables and open vswitch are both new-ish and written C.
- tptacek 10y ago"As much as it can". nftables and openvwitch both forward packets, and thus need to be written in C (or, perhaps, in the long term, Rust). Really, you're playing on a semantic ambiguity in the word "router". A BGP implementation doesn't forward packets; it maintains a database of forwarding paths that the packet forwarding layer consults. In a large Cisco router, the SOC that runs BGP and maintains the RIB isn't the same electronic component that forwards packets.
- Rapzid 10y agoI'm not playing on anything; just not aware of a trend away from C for this stuff.
- xorcist 10y agoNot really. Neither the BGP layer nor the packet forwarding layer in that big Cisco box of yours is moving away from C code. Standard network software such as Postfix and OpenSSH took ten years to replace their predecessors, and their eventual replacement will be just as gradual. It's not happening right now, so I think it's a bit of a stretch to call it a trend.
- tptacek 10y agoThis is the sort of thing Go really shines on: network and infrastructure services that would ordinarily be provided by big ugly C programs, where the latency requirements are significant but not as bad as raw packet forwarding. If your current best alternative is a C program, I'm not sure why you wouldn't seriously consider replacing any of the following with Go (or Rust) programs: * Authority DNS * DNS caches * ntp * SMTP * SSH * IMAP (added later) * SNMP * PBX/Telephony Fortunately, as time goes on, fewer and fewer people need to run these services at all.
- shanemhansen 10y agoCloudflare mentions they are heavy users of a golang DNS lib https://blog.cloudflare.com/dns-parser-meet-go-fuzzer/ https://blog.cloudflare.com/dns-parser-meet-go-fuzzer/ ntppool.org uses golang for DNS https://news.ntppool.org/2012/10/new-dns-server/ https://news.ntppool.org/2012/10/new-dns-server/
- jsmthrowaway 10y agoCloudflare is a heavy user of Go period.
- dsr_ 10y ago...well, because of the primary shortcoming of the Go system: lack of standard infrastructure to manage the inevitable updates. Let's say I have replaced bind, unbound, ntpd, postfix, openssh, dovecot, snmpd and asterisk with Go-written equivalents. Three weeks later, there is a bug found in the standard Go TLS library. My distro ships all the packages noted above, but not their Go-equivalents, so my work load now includes monitoring security-announce lists for eight different products, where before I monitored the security-announce list for my distro. I need to be able to rebuild all eight systems myself, rather than getting automatic package updates to my test systems, and then promoting the packages through alpha and then production. Go is nicer than some other languages about that, but it builds binaries, not packages. Next: I'm pretty sure you can't build an snmpd without ASN.1 parsing, and ASN.1 parsing is the very model of a fraught and perilous splatter-fest. Will the Go ASN.1 parser be better maintained than libtasn? Maybe, maybe not. Repeat this for everything else. Can these problems be solved? Sure. Are they ready right now? Not that I'm aware of. Please enlighten me, if you have good answers.
- educar 10y agoI look forward to the first programmer friendly SMTP/IMAP implementation. Haraka is the closest friendly SMTP server I have come across.
- 102030485868 10y agoI can understand why there hasn't been much movement in the SMTP world. SMTP is pretty hard to get right, as is maybe hinted at by the many RFCs. You really don't want to be making any mistakes because it's a somewhat unforgiving protocol... unless you send an error code.
- DanielDent 10y agoI think the reason SMTP is hard to get right is not because of the many RFCs. The reason is that it's not documented. Operational experience at scale is needed to know how to write an effective SMTP implementation, and that experience is half-documented by many people in many different information silos. But... I'd also say it's an extremely forgiving protocol. In fact, it's the fact that it's so forgiving which makes operational experience required to implement it. A "correct" SMTP implementation has a lot of latitude in the choices it makes - and it's that latitude which makes life difficult.
- educar 10y agoAgreed. But like most things opensource, it just becomes better over time if someone did a good start :-) .
- d0vs 10y agoI'm just curious. Fuck me?
- dang 10y agoPlease stop posting unsubstantive comments to Hacker News. We detached this comment from https://news.ycombinator.com/item?id=11521496 https://news.ycombinator.com/item?id=11521496 and marked it off-topic.
- arca_vorago 10y agoWould elixir or erlang also be a good potential language for bgp/quagga/zebra?
- technion 10y agoI feel "BGP in Erlang" would be exactly the kind of thing I could implement well - even if it did feel icky having to implement "MD5 Authentication" in 2016. The problem with those sorts of projects however, is inertia. The average hobbyist rarely ever uses BGP. Large networks and ISPs aren't going to implement my personal project as a critical component to keeping their entire infrastructure online without a very good reason. This project looks promising, I'm hoping it doesn't suffer this problem.
- rmdoss 10y agoI remember years ago when every new PHP application would have "PHP" before its name. PHPNuke, PHPMyadmin, etc, etc. Seeing the same trend with Go now. Why add the language name to the software name? Real question...
- sanderjd 10y agoAnother real question: What is the better approach? Generic names (eg. "bgpd")? That seems decent if you have an over-arching project to group the generic stuff under (eg. "Apache httpd"). Making up codenames for everything (eg. "Zebra")? It's a pain to think of those, and they're rarely descriptive or meaningful. I don't really like the language-name-prefix thing either. It makes the language seem like the important thing about the project. Sometimes it is the most important thing, but even then, that is mostly only true at the beginning of a project when attracting contributors is most critical. But I'm not sure the other approaches are much better.
- malcolmgreaves 10y agoI really dislike projects that assume you know the definition of an acronym and never (1) expand it nor (2) explain it. BGP is super important to the GoBGP project. It deserves at least a mention somewhere in the first 4 sentences introducing the project. Gahh!