When you send traffic to an IP address, your router must know where to send it to. In consumer routers, you usually just have a default route for the whole internet towards your ISP's gateway, but the ISP must also maintain a routing table to know where the packet must go next, and BGP is the protocol most commonly used to advertise where each network resides.
Every ISP could in theory maintain the internet routing tables by just having a set of static routes, but considering that the IPv4 internet routing table consists of over half a million entries at the moment (and it's growing), this is practically impossible. Instead, each ISP (or "Autonomous System") peers with others to advertise their routes to the network blocks assigned to them, and often the routes they receive from other peers.
When you have multiple peers like this, the advertised routes contain as metadata the IANA assigned global AS numbers of each participant in the network up to the endpoint (the "AS path"), thus allowing routers to calculate the shortest route in case two peers advertise routes to the same network block. This also gives the internet its self-healing property, since if one router goes down, you usually have an alternate path available.
The BGP "communities" mentioned in the article are a way for peers to signal additional information about their routes. For example, an ISP can publicly claim that they will not forward traffic to routes advertised with a certain community, allowing a network operator to tell their transit ISP to drop DoS traffic to a subset of their addresses before it reaches their network, helping protect customers not under attack.
There've been some really good technical answers, I'm going to address the conceptual.
The Internet is a set of interconnected networks. These are "internetworked" together.
BGP is the protocol, border gateway protocol, which lets those individual networks know how to find one another.
The individual networks are known as "autonomous systems". This is a single uniform zone of autonomous control, under a single authority (more-or-less -- there are exceptions to everything). An Autonomous System (AS) is identified by an Autonomous System Number (ASN). It's comprised of a number of contiguous network blocks (go look up The CIDR Report if you want to see these). And it finds its neighbours and peers by way of BGP, as previously noted.
I'll second the recommendation for Halabi's book, which remains the definitive text.
Good question, and though this isn't something that turns up every day, it's what's underlying your use of the Net.
I don't know that you need an explanation so simple/abstract but I couldn't help taking a crack at it too.
Imagine you had to deliver a package to a university but only through your direct friends. You'd have to hand it off to somebody who goes to that university or somebody who knows somebody(or knows somebody, etc) that goes to that university.
BGP helps routers maintain the list of their friends(other directly connected routers) that can get packages(packets) to remote locations(networks).
It is the protocol that make internet just works. When you access a website, the website name is translated to an IP Address. And then your browser will send your request to that IP Address. How do you find that website IP Address?BGP helps you to find the correct path to that Address.
>>And then your browser will send your request to that IP Address. How do you find that website IP Address?BGP helps you to find the correct path to that Address.<<
Curious question for people with their finger on the networking pulse: are there planned changes for BGP related to IPv6/IoT or will the current scheme scale well?
I'm assuming "many more" networked devices being added to the global network will eventually result in more traffic and more ASs being connected.
BGP is a path vector protocol so traditionally it only receives information from its direct peers. Community strings are for sending targeted info to a distant (or close) autonomous system, enabling you to effect mutually agreed upon changes in that AS. With a larger number if bytes available in a community strings it enables us to use community strings to convey a more complex set of instructions.