LANMAR for IPv6AgendaLANMARSlide 4LANMAR Fisheye ScopeLANMAR Fisheye Scope Cont.LANMAR RoutingLANMAR Routing Cont.IPv4IPv4IPv6IPv6 Cont.Slide 13Slide 14LANMAR ImplementationSlide 16Slide 17LANMAR Subnet MasksLANMAR Routing TableLANMAR Routing Table Cont.Challenges in porting IPV4 LANMAR to IPV6Data StructureData Structures Cont.Uintfunc LibrarySyntax for IPv6Substituting IPv4 functions with newer IPv6 versionsMasksRouting TableRouting Table Cont.DemonstrationLANMAR for IPv6Jason ChenTeresa BreyerYeng-Zhong LeeAgendaReview of LANMARIPv4 and IPv6 AddressingLANMAR implementationProblems facedDemonstrationLANMARCombines features of Fisheye State Routing (FSR) and Landmark routing.Each set of nodes that moves as group forms a logical subnet.Each subnet elects a landmark.Logical SubnetLogical SubnetLandmarkLandmarkLANMAREach node has unique logical identifier.Each identifier has subnet and host field.Host field is unique in subnet.Each node stores the following information:For each destination within fisheye scope:Link StateTime StampFor each destination within fisheye scope and for each Landmark node:Next HopDistanceLANMAR Fisheye ScopeNodes exchange Link State only with their neighbors.Update rate decreases as hop distance increases.Routes within Fisheye scope are accurate.As hop distance increases routes accuracy decreases.LANMAR Fisheye Scope Cont.Difference to FSR:LANMAR routing table includes only nodes within scope and landmark nodes. ⇒ Improves Scalability by reducing Routing Table size.Typically all members in logical subnet are within fisheye scope.LANMAR Routing•A packet to destination within neighbor scope is routed directly using local tables.•A packet to destination out of scope is routed to corresponding Landmark using the subnet field of destination.•Once the packet is in scope of destination, the direct route is found in local tables.•Packet does not need to pass through Landmark.LANMAR Routing Cont.•Node address = {subnet ID, Host ID}•Lookup local routing table to locate destination. •If successful: Send packet directly.•If failure: Look up landmark table to find destination subnet LM1.•Send a packet toward LM1.LM2sourcesourcedestinationdestinationLogical SubnetLogical SubnetLandmarkLandmarkLM1LM3Long haul routinglocal routingIPv432 bitsOriginally 4 classes of addresses:Shortage of Group A addresses0networkhost10networkhost110network host1110multicast addressABCD1.0.0.0 to127.255.255.255128.0.0.0 to191.255.255.255192.0.0.0 to223.255.255.255224.0.0.0 to239.255.255.255IPv4 Header: verTotal length32 bitsdata (variable length,typically a TCP or UDP segment)16-bit identifierIP headerchecksumtime tolivesource IP addresshead.lentype ofserviceflgsfragment offsetprotocoldestination IP addressOptions (if any)20 bytesIPv6Motivation: 32-bit address space exhaustion128 bitFragmentation fields moved out of base header.IP options moved out of base header.Header Length field eliminatedHeader Checksum eliminated.Type of Service field eliminated.Time to Live Hop Limit, Protocol Next HeaderPrecedence Priority, added Flow Label fieldLength field excludes IPv6 header.IPv6 Cont.Header: fixed 40 bytes length.Destination Address (16 bytes)Version PriorityFlow LabelPayload Length Next Header Hop LimitSource Address (16 bytes, 128 bits)IPv6 Cont.How IPv6 addresses look like:2128-1: 0xffffffffffffffffffffffffffffffff Separator after 16 bits, omit leading 0x.2128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffffe80:0000:0000:0000:0202:2dff:fe2e:3ad6One sequence of adjacent 16 bit blocks of 0’s can be omitted.fe80::0202:2dff:fe2e:3ad6Leading zeros of each block can be omitted.fe80::202:2dff:fe2e:3ad6IPv6 Cont.3 types of addresses.Unicast: identifies single interface.Anycast: identifies a set of interfaces.Multicast: identifies a group of interfacesreplaces broadcast addresses in IPv4prefix: 1111 1111 or fffor example link scope: ff02: …LANMAR Implementation2 complementary and cooperating routing schemes, 3 threads:A local “myopic” proactive routing scheme (we used RIP) that operates within limited scope centered at each node and exchange route information about nodes up to only a few hops (Fisheye Scope) one thread for ⇒sending RIP messages.A long haul distance vector routing scheme that propagates the elected landmark of each subnet and the path to it into entire network another thread for ⇒sending Landmark messages.Common thread for receiving messages.LANMAR ImplementationAdvertisement messagesProactive routing protocolPeriodic routing update message is sent.LANMAR routing control packet<LM_Address, LM_NextHop, LM_Distance, LM_Members, Seq#>Landmark routes advertised to all nodes.Local routing control packet<Address, NextHop, Distance>Routes only advertised to nodes within its scope.LANMAR ImplementationMessage processA subnet mask is used to extract the group ID from a node’s IP address.Each group is a logical subnet.Landmark election is performed only among nodes in the same LANMAR group.Local scope: RIPLANMAR Subnet MasksIPv4:IPv6:SubnetMaskx x x x x x x xLANMAR Group ID Node IDSubnetMaskx x x x x x x x x x x x x x x x x x x x x x x x1 1 1 1 1 1 1 11 1 1 1 1 1 1 11 1 1 1 1 1 1 10 0 0 0 0 0 0 064 bitsGroup IDNode IDNetwork ID16 bits48 bits111…11000000……………………00000000000000………0000000LANMAR Routing TableRouting table managementUnicast Routing TableStores routing information for all unicast routing protocols running on router.Routing Table has 2 sub tablesLocal routing table is flat without the concept of group or subnet.Landmark routing table keeps only one entry from each group or subnet.LANMAR Routing Table Cont.Dest. Prefix Next Hop Metfe80:0:0:1333::3ad6 128 :: 0fe80:0:0:1444::4352 128 fe80:0:0:1333::cf49 2Landmark Address Prefix Next Hop Metric0:0:0:1333:: 64 fe80:0:0:1333::cf49 10:0:0:1444:: 64 fe80:0:0:1444::4352 1Local routing tableLandmark routing tableChallenges in porting IPV4 LANMAR to IPV6Data StructureSelected examples:struct sockaddr_in6 {sa_family_t sin6_family; /*AF_INET6*/in_port_t sin6_port; /*Port number*/ uint32_t sin6_flowinfo; /*IPv6 traffic class and flow information*/ struct in6_addr sin6_addr; /*IPv6 address */uint32_t sin6_scope_id; /*Set of interfaces for a scope*/ }instead ofstruct
View Full Document