1. Issue of TCP port numbers in BGP
It is because BGP uses different source and destination ports other than 179 depending on who originates the session. BGP is essentially a standard TCP based protocol, which means that it is client and server based.
When a TCP client attempts to establish a connection to a TCP server it first sends a TCP SYN packet to the server with the destination port as the well known port. This first SYN essentially is a request to open a session. If the server permits the session it will respond with a TCP SYN ACK saying that it acknowledges the request to open the session, and that it also wants to open the session. In this SYN ACK response the server uses the well known port as the source port, and a randomly negotiated destination port. The last step of the three way handshake is the client responding to the server with a TCP ACK, which acknowledges the server’s response and completes the connection establishment.
Now from the perspective of BGP specifically the TCP clients and servers are routers. When the “client” router initiates the BGP session is sends a request to the server with a destination port of 179 and a random source port X. The server then responds with a source port of 179 and a destination port of X. Therefore all client to server traffic uses destination 179, while all server to client traffic uses source 179. We can also verify this from the debug output in IOS.
2. BGP message types
There are four message types in BGP:
OPEN: An OPEN message is the first message sent by each side after a TCP connection is established. Routers use this message to identify itself and to specify its BGP operational parameters.
UPDATE: UPDATE messages are used to transfer routing info between BGP peers. It is to advertise feasible routes that share common path attributes to a peer, to withdraw multiple unfeasible routes from service or both.
KEEPALIVE: KEEPALIVE messages are exchanged between peers periodically and the maximum interval is one third of the negotiated Hold Time. If a router accepts the parameters specified in OPEN messages, it responses KEEPALIVE.
NOTIFICATION: A NOTIFICATION message is sent when an error condition is detected and then the BGP connection is closed immediately.
BGP RFC:https://tools.ietf.org/html/rfc4271
3. IPv6
Address notation
128 bits: each group 4 hex character
Compress ways:
1) remove leading 0's in a group
2) substitute a group of consecutive 0's with a single double colon (::), but the substitution may only be applied once in the address
3) both
IPv6 rapid deployment
https://www.cisco.com/c/en/us/products/collateral/ios-nx-os-software/enterprise-ipv6-solution/whitepaper_c11-665758.html
6rd -- for IPv6 Rapid Deployment on IPv4 Infrastructure -- is a method of encapsulating IPv6 packets for transmission over IPv4 backbone networks. It was used by the French ISP Free to rapidly deploy IPv6 to its 1.5 million residential customers in 2007.
The 6rd approach requires customers to have home gateways/routers that can support 6rd and can do the encapsulation of IPv6 packets inside IPv4 and forward them across the Internet backbone. The ISP, in turn, operates 6rd gateways to handle the tunneled IPv6 traffic.
6rd is a modification of the 6to4 technique that allows ISPs to handle native IPv6 traffic headed towards their customers. The modifications allow ISPs to accept only tunneled IPv6 traffic that is headed towards their customers, and all of this traffic goes through 6rd gateways operated by the ISP
IPv4-Compatible IPv6 addr and IPv4-mapped IPv6 addr:
https://docs.oracle.com/cd/E19683-01/817-0573/chapter1-17/index.html
4. Tunneling (port forwarding)
Tunneling is generally done by encapsulating the private network data and protocol information within the public network transmission units so that the private network protocol information appears to the public network as data.
A tunnel is a mechanism used to ship a foreign protocol across a network that normally wouldn't support it. Tunneling protocols allow you to use, for example, IP to send another protocol in the "data" portion of the IP datagram. Most tunneling protocols operate at layer 4, which means they are implemented as a protocol that replaces something like TCP or UDP.
5.
|
Destination-based routing is the typical, most common type of routing. For this, each message that we send contains the address of the destination and the forwarding decision process makes its forwarding decision solemnly based on this address (and independent of the original sender). i.e. We don't care about who sent the message, only about where it is supposed to go.
So, when constructing a routes, one thing we can do is root a spanning tree at the destination. This creates a path from all possible sources to that destination. This is called a "sink tree".
Source-based routing is the reverse of destination-based routing. The decision process is based on the source address. So, when sending a message, we only include the address of the sender (and not of the destination). The decision on where to forward the message is based on this source address. This means that the source could be sending the message to any host (we don't know exactly who). Therefore we create a spanning tree routed at the source (this is known as a "delivery tree") and the message is thus sent to every child in this tree.
Source-based routing is only really useful for doing some kind of broadcast / multicast (e.g. consider a delivery tree when building a multicast group).
|
|
Destination-based routing is the typical, most common type of routing. For this, each message that we send contains the address of the destination and the forwarding decision process makes its forwarding decision solemnly based on this address (and independent of the original sender). i.e. We don't care about who sent the message, only about where it is supposed to go.
So, when constructing a routes, one thing we can do is root a spanning tree at the destination. This creates a path from all possible sources to that destination. This is called a "sink tree".
Source-based routing is the reverse of destination-based routing. The decision process is based on the source address. So, when sending a message, we only include the address of the sender (and not of the destination). The decision on where to forward the message is based on this source address. This means that the source could be sending the message to any host (we don't know exactly who). Therefore we create a spanning tree routed at the source (this is known as a "delivery tree") and the message is thus sent to every child in this tree.
Source-based routing is only really useful for doing some kind of broadcast / multicast (e.g. consider a delivery tree when building a multicast group).
|