website: init
This commit is contained in:
parent
afafd02d9a
commit
e4ef026a0c
7 changed files with 257 additions and 1 deletions
91
website/blog/posts/01.html
Normal file
91
website/blog/posts/01.html
Normal file
|
@ -0,0 +1,91 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="stylesheet" href="../../style.css" type="text/css">
|
||||
<html>
|
||||
|
||||
<body>
|
||||
<div class="around">
|
||||
<div class="content">
|
||||
<pre style="display: inline;">
|
||||
|
||||
|
||||
TODO:
|
||||
eBGP/iBGP session
|
||||
Graphs
|
||||
|
||||
/**********************************************/
|
||||
/* A no-bullshit guide to a bullshit protocol */
|
||||
/**********************************************/
|
||||
We can think of the Internet as a network of networks which are all connected in some way. We will refer to
|
||||
these networks as Autonomous Systems(AS) in this article.
|
||||
|
||||
Now, how do we connect these AS's in a sane way? This is where BGP comes in. BGP, which stands for `Border
|
||||
Gateway Protocol`, enables different AS's to exchange information with each other, e.g. communicating with each
|
||||
other.
|
||||
|
||||
There are three main challenges BGP has to solve:
|
||||
- Scalability: The Internet is BIG. BGP needs to scale well to be feasible in a large scale.
|
||||
- Privacy: Networks don't want to divulge internal topologies (topology = how a network is structured)
|
||||
- Policy enforcement: The Networks themselves need to have control over where to send and recieve traffic.
|
||||
|
||||
Other protocols, like Link-Sate routing, do not solve these challenges.
|
||||
|
||||
BGP's key concept, which it revolves about, is called *path-vector routing*, where it adertises the entire
|
||||
AS-level path.
|
||||
Now, what is an AS-level path? We'll get to that in a minute.
|
||||
|
||||
Before that, why do we need even BGP? The problem is that sending data over the internet costs money. If we want
|
||||
to minimize the costs of sending data, we need to find routes which cost as little as possible. This is also why
|
||||
BGP is a "follow the money" protocol. Different ASes only connect with each other if they can save money that
|
||||
way.
|
||||
|
||||
There are two policies we can use to define this routing:
|
||||
- Selection: Which path to use (only relevant for outbound traffic)
|
||||
- Export: Which path to advertise (only relevant for inbount traffic)
|
||||
|
||||
TODO: add graphs here
|
||||
|
||||
===============================================
|
||||
eBGP and iBGP
|
||||
===============================================
|
||||
|
||||
BGP comes in two flavors: eBGP and iBGP.
|
||||
The e/i stands for external/internal
|
||||
|
||||
External BGP sessions connect border routers in different ASes. These are therefore use to learn routes to
|
||||
external destinatons
|
||||
|
||||
TODO: add graph
|
||||
|
||||
Internal BGP sessions connect the routers in the same AS. These are used to split up externally-learned routes
|
||||
internally. These are tehn announces exernally(to other ASes) again, using eBGP sessions.
|
||||
|
||||
BGP itself is a pretty simple protocol composed of four basic messages:
|
||||
- open: establish a BGP session (using TCP)
|
||||
- notification: report unusual conditions
|
||||
- update: inform neighbor of a new best route
|
||||
- can be a change or a removal of a best route
|
||||
- keepalive: inform neighbor that connection is alive
|
||||
|
||||
update messages carry an IP prefix together with a set of attributes:
|
||||
/*********************/
|
||||
/* IP prefix */
|
||||
/*********************/
|
||||
/* Attributes */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/*********************/
|
||||
|
||||
There are four types of different attributes:
|
||||
- NEXT-HOP
|
||||
- AS-PATH
|
||||
- LOCAL-PREF
|
||||
- MED
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
1
website/blog/posts/02.html
Normal file
1
website/blog/posts/02.html
Normal file
|
@ -0,0 +1 @@
|
|||
JJ is is a new version control system, made to be compatible with git and _much_ less painful than it.
|
Loading…
Add table
Add a link
Reference in a new issue