IPv6 Advanced Protocols Implementation

Introduction Any time when communication takes place between any pair of nodes, especially when that communication involves nodes that reside on different network segments, a decision must be made about where each packet should go. This decision is often known as a packet routing decision, or a packet forwarding decision. The intermediate network devices, commonly […]

Overview of Vector-based Algorithms and Link-State Algorithm (IPv6 Unicast Routing Protocols)

Distance-Vector Algorithm A router running the distance-vector algorithm, as is the case with RIPng, initializes its local routing database with the addresses and costs of the directly attached networks and nodes. This information is exchanged with other directly connected routers through routing protocol messages. When a router receives routing messages from its neighboring routers, it […]

Introduction to RIPng (IPv6 Unicast Routing Protocols)

The RIPng protocol is based on the distance-vector algorithm commonly known as the Bellman-Ford algorithm. Consider the example in Figure 1-8. Router RT-1 advertises its directly connected network N-1 of prefix 2001:db8:0:1000::/64 with a metric of 1 on the point-to-point links to RT-2 and RT-3. The costs of the links from RT-1 to RT-2 and […]

Introduction to BGP4+ (IPv6 Unicast Routing Protocols) Part 1

The BGP-4 protocol as defined in [RFC4271] is an exterior routing protocol that is mainly deployed between different autonomous systems (ASs). Since the original BGP-4 specification assumes the routing protocol operates over the IPv4 network, the routing messages carry only IPv4 routes. [RFC2858] updates the BGP-4 specification to support additional protocols such as IPv6. The […]

Introduction to BGP4+ (IPv6 Unicast Routing Protocols) Part 2

NOTIFICATION message The NOTIFICATION message is sent when an error condition is detected by a BGP speaker. The BGP speaker terminates the connection immediately after sending the message. The NOTIFICATION message contains the message header and the additional fields that are shown in Figure 1-20. Error Code This 1-byte field indicates the type of error […]

Introduction to OSPFv3 (IPv6 Unicast Routing Protocols) Part 1

The OSPF protocol is a link-state routing protocol, that is, each router maintains a link-state database (LSDB) that comprises link-state information collected from all participating OSPF routers within an AS. Link-state information (or just link-state) refers to a router’s local view of its immediate network topology, which includes the router’s operational interfaces, the cost of […]

Introduction to OSPFv3 (IPv6 Unicast Routing Protocols) Part 2

Router-LSA Figure 1-31 shows the format of the Router-LSA. W The W-bit is used by Multicast OSPF and is not discussed in this topic. V The V-bit identifies the advertising router as an endpoint of at least one virtual link over a transit area. E The E-bit identifies the advertising router as an ASBR. B […]

Code Introduction (IPv6 Unicast Routing Protocols)

In BSD systems the Routing Information Base (RIB) is maintained in a user process called a routing daemon while the Forwarding Information Base (FIB) is stored in the kernel routing table. The routing daemon builds its RIB through routing information exchanges with other routers, and communicates with the kernel via a special type of socket […]

IPv6 Routing Table in the BSD Kernel

Consider the simple network topology depicted in Figure 1-41. Of our particular interest is the FreeBSD IPv6 router, which connects two Ethernet links with interfaces ne0 and ne1. The other router on the link attached to interface ne0, whose link-local address is fe80::1, connects the entire example network to the Internet, and provides the default […]

Routing API (IPv6 Unicast Routing Protocols) Part 1

There are two major interfaces for BSD variants to get access to the kernel routing table. One is through a generic routing socket, and the other is via the sysctl() library function. Routing Sockets A routing socket is a generic socket interface to the kernel’s routing table. Via a routing socket, an application can add […]