06 IPv6(2020.0523)

IPv6原理描述

IPv6基础描述

IPv6特点

  1. 地址空间大,IPv4是32位,而IPv6是128位
  2. 支持分层结构
  3. 无需NAT技术,更有利于寻址
  4. 支持单播、组播和任意播(特殊单播) ,取消了广播
  5. 可以实现无状态的配置(EUI64)
  6. 简化了报文格式
  7. 加强了扩展报文头部的支持
  8. 流标签,比用五元组定义流更加方便
  9. 认证 ipsec
  10. 对移动网络的支持

IPv6地址表示方法

  • IPv6地址包括128比特,由冒号分割成8段,每段4个16进制数,例如:2031:0000:130F:0000:0000:09C0:876A:130B
  • IPv6压缩格式
    • 每组中的前导“0”都可以省略,例如:2031:0:130F:0:0:9C0:876A:130B
    • 地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替(一个地址中仅能使用一次),例如:2031:0:130F::9C0:876A:130B

IPv6地址结构

  • IPv6地址分两部分
    • 网络前缀,n比特,相当于IPv4中的网络ID
    • 接口标识,128-n比特相当于IPv4中的主机ID
  • 接口标识生成方法
    • 手工配置
    • 系统通过软件自动生成
    • IEEE EUI-64规范自动生成(依据MAC地址生成)
      1. 将MAC地址中间插入FFFE,例如:00e0-fc4c-5103转换成00e0-fcff-fe4c-5103
      2. 将第七位由0变为1,表示该接口标识是全球唯一,例如
        00e0-fcff-fe4c-5103
        -----> 00000000-e0-fcff-fe4c-5103
        -----> 00000010-e0-fcff-fe4c-5103
        -----> 02e0:fcff:fe4c:5103
        -----> 2001:12:12:12:2E0:FCFF:FE4C:5103

IPv6配置

# 第一步:全局使能IPv6
ipv6 
# 第二步:接口使能IPv6
int g0/0/0
ipv6 enable 
ipv6 address 2001:12:12:12::/64 eui-64

对于IPv6单播地址来说,如果地址的前3比特不是000,则接口标识必须为64位;如果地址的前3位是000,则没有此限制

IPv6地址分类

 IPv6地址分类

单播地址(Unicast Address)

标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在IPv6中,一个接口拥有多个IPv6地址是非常常见的现象。

可聚合全球单播地址

全球单播地址定义用于IPv6 Internet,是全局唯一的和全局可路由的
可聚合全球单播地址

  • 类似IPv4的公网地址
  • 由前缀、子网ID和接口标识组成
    • 全局路由前缀:由提供商指定给一个组织机构,一般至少为48bit。目前已经分配的全局路由前缀的前3bit均为001,因此前缀为2000::/3
    • 子网:组织机构可以用子网ID来构建本地网络(Site),与IPv4中的子网号作用相似。子网ID通常最多分配到第64位
    • 主机位:用来标识一个设备,与IPv4中的主机ID作用相似
链路本地地址

在一个节点启动IPv6协议栈时,节点的每个接口会自动配置一个链路本地地址,该地址专门用来和相同链路上的其他主机通信
链路本地地址

  • 只能在连接到同一个本地链路的节点之间使用,广泛应用于邻居发现、无状态地址等
  • 链路本地地址前缀FE80::/10,将接口ID添加在后面作为地址的低64位
  • 每个IPv6接口都必须具备一个链路本地地址
唯一本地地址

为了代替站点本地地址的功能,同时为了这样的地址具有唯一性,避免产生像IPv4的私有地址泄露到公网而造成的问题,RFC4193定义了唯一本地地址
唯一本地地址

  • 概念上类似于IPv4的私网地址,仅能够在本地网络使用,在IPv6 Internet上不可被路由
  • 固定前缀为FC00::/7,分为两块,其中FC00::/8暂未定义,另一块是FD00::/8,其格式如上图
#  自动生成IPv6链路本地地址,思科只要开启了IPv6功能 ,就会自动 自成 
interface GigabitEthernet0/0/0
ipv6 enable 
ipv6 address auto link-local     
# 手工配置IPv6链路本地地址
interface GigabitEthernet0/0/0
ipv6 enable 
ipv6 address FE80:1::1 link-local  
# ping
ping ipv6  FE80::2E0:FCFF:FE56:2BF9 -i g0/0/0

组播地址(Multicast Address)

标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文。
 组播地址

  • 类似IPv4组播地址
  • 由前缀、标志(flag)字段、范围(scope)字段和组播组ID组成
    • Flags:
      • 前3位设为0
      • 最后一位定义地址类型
        • 0=固定或众所周知
        • 1=本地分配或短期
    • Scope:表示组播组的范围
      • 此字段长度为4位,除了使用组播路由协议提供信息外,路由器还要使用组播范围段来判定组播流量能否发送出去
        Scope
    • Group ID:组播组ID
      • 用于标识组播组,这个值在地址范围内是唯一的,此字段的长度为112位。其中,永久分配的组ID不收当前范围的限制,而临时组ID只能在某个特定的范围内有意义。而FF01::到FF0F::的组播地址数据保留地址段,而且也是永久组播地址。
  • 预定义组播地址
    • Node-local
      • 所有节点的组播地址:FF01:0:0:0:0:0:0:1(类似224.0.0.1)
      • 所有路由器的组播地址:FF01:0:0:0:0:0:0:2(类似224.0.0.2)
    • Link-local
      • 所有节点的组播地址:FF02:0:0:0:0:0:0:1
      • 所有路由器的组播地址:FF02:0:0:0:0:0:0:2
      • Solicited-Node组播地址:FF02:0:0:0:0:1:FFXX:XXXX 被请求节点组播地址,类似ARP
      • 所有OSPF路由器组播地址:FF02:0:0:0:0:0:0:5
      • 所有OSPF的DR路由器组播地址:FF02:0:0:0:0:0:0:6
      • 所有RIP路由器组播地址:FF02:0:0:0:0:0:0:9
      • 所有PIM路由器组播地址:FF02:0:0:0:0:0:0:D
组播地址的MAC地址映射
组播地址的MAC地址映射
  • 在以太网中,一个组播IPv6报文必须执行以太网封装
  • 组播IPv6报文的目的IP地址是组播IPv6地址,而目的mac地址则必须是组播mac地址,并且该地址必须与组播IPv6地址对应
  • 33-33是专门为IPv6组播预留的mac地址前缀,mac地址的后32bit从对应的组播IPv6地址的后32bit复制而来
请求节点组播地址(Solicited-Node)
请求节点组播地址
  • IPv6中特有的组播地址
    • 每个节点必须为分配给他的每个单播和任播地址加入一个组播地址,用于DAD地址重复检测
  • Solicited-Node组播地址生成过程
    • 接口ID(接口IPv6地址)的后24位:xx:xxxx
    • 前缀:FF02:0:0:0:0:1:FF,例如主机的mac地址为00-02-b3-1e-83-29,IPv6地址为fe80::0202:b3ff:fe1e:8329,则请求节点组播地址为发ff02::1:ff1e:8329

任播地址(Anycast Address)

任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。任播地址与单播地址使用同一个地址空间

# 配置任播地址
ipv6 address 2001:12:1::1/64 anycast   
  • 任播地址和单播地址使用相同的地址空间
  • 任播地址只可以被分配给路由设备,不能应用于主机,不能做为IPv6报文的源地址
  • 配置时需明确表示任播地址,用来区别单播和任播
  • 子网路由器任播地址
    • 发送到子网路由器任播地址的报文会被发送到该地址标识的子网中路由意义上最近的一个路由器

主机的IPv6地址

只有一个网络是配置的IPv4主机通常会为该适配器分配单一的IPv4地址,而IPv6主机则会为每个适配器分配多个IPv6地址。典型的IPv6主机上的接口通常会分配到如下单播地址:

  1. 每个接口分配到一个链路本地地址
  2. 每个接口分配到二外的单播地址(可以是单个或者多个唯一本地地址或全球地址)
  3. 环回接口分配到环回地址::1
  4. 接口本地范围内所有节点的组播地址FF01::1
  5. 链路本地范围内所有节点的组播地址FF02::1
  6. 每个单播地址的请求节点地址
  7. 已加入的组的组播地址
    典型的IPv6主机通常是多宿主的,因为IPv6主机总是至少拥有两个可以接收数据包的地址——用于接收本地链路流量的链路本地和可路由的唯一本地或全球地址

路由器的IPv6地址

  1. 单播地址
    1. 每个接口分配到一个链路本地地址
    2. 每个接口分配到额外的单播地址(可以是单个或者多个唯一本地地址或全球地址)
    3. 环回接口分配到的环回地址::1
  2. 任播地址
    1. 每个子网分配到的一个子网路由器的任播地址
    2. 额外的任播地址(可选)
  3. 侦听如下组播地址的流量
    1. 接口本地范围内所有节点的组播地址FF01::1
    2. 接口本地范围内所有路由器的组播地址FF01::2
    3. 链路本地范围内所有节点的组播地址FF02::1
    4. 链路本地范围内所有路由器的组播地址FF02::2
    5. 每个单播地址的请求节点地址
    6. 已加入的组的组播地址

IPv6报文格式

基本报头

基本报头
字段解释

  • IPv6基本报头、IPv6扩展报头和上层协议数据单元
  • IPv6基本报头有8个字段,固定大小为40字节,每个IPv6数据报都必须包含报头,基本报头提供报文转发的基本信息,会被转发路径上面的所有路由器解析

扩展报头

扩展报头
扩展报头是可选的,只有需要该扩展报头对应的功能时,数据的发送者才会添加相应的扩展报头

  • 将原IPv4选项字段放入扩展报头
  • IPv6报文包含0、1或者多个扩展报头
  • 固定为8字节长度的整数倍
扩展报头种类
扩展报头种类
扩展报头规约

当超过一种扩展报头被用在同一个分组里时,报头必须按照下列顺序出现:

  1. IPv6基本报头
  2. 逐跳选项扩展报头
  3. 目的选项扩展报头
  4. 路由扩展报头
  5. 分段扩展报头
  6. 认证扩展报头
  7. 封装安全有效载荷扩展报头
  8. 目的选项扩展报头
  9. 上层协议数据报文
    路由设备转发时根据基本报头中的NextHeader值来决定是否要处理扩展头,并不是所有的扩展报头都需要被转发路由设备查看和处理的。
    除了目的选项扩展报头可能出现一次或者两次(一次在路由扩展报头之前,一次在上层协议数据报文之前),其余扩展报头只能出现一次。

IPv6基本实现

ICMPv6

实现邻接点发现、无状态地址配置(包括重复地址检测)、PMTU发现等
报文格式

差错报文分类

  1. 目的不可达错误报文(类型一):数据包无法被转发到目标节点或上层协议
  2. 数据包过大错误报文(类型二):报文超过出接口的链路MTU
  3. 时间超时错误报文(类型三):Hop Limit字段值等于0;分段重组报文超时
  4. 参数错误报文(类型四):IPv6报头或者扩展报头出现错误

信息报文分类

  1. 回送请求报文:发送到目标节点,使目标节点立即发回一个会送应答报文。回送请求报文的类型字段值为128,代码字段值为0
  2. 回送应答报文:对回送请求报文的应答。回送应答报文的类型字段值为129,代码字段值为0

邻居发现协议NDP

邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。

  • 邻居通告报文:
    • 邻居请求报文NS:类型字段值为135。
    • 邻居通告报文NA:类型字段值为136。
  • 在路由器发现中使用了两种ICMPv6报文:路由器通告和路由器请求报文:
    • 路由器通告RA:类型字段值为134。
    • 路由器请求RS:类型字段值为133。
  • 重定向使用了一种ICMPv6报文:重定向报文。
    • 重定向报文:类型字段值为137。

跟踪邻居状态

通过邻居或到达邻居的通信,会因各种原因而中断,包括硬件故障、接口下的热插入等。
如果目的地失效,则恢复是不可能的,通信失败;
如果路径失效,则恢复是可能的。
因此节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。
5种邻居状态:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe)
跟踪邻居状态

下面以A、B两个邻居节点之间相互通信过程中A节点的邻居状态变化为例(假设A、B之前从未通信),说明邻居状态迁移的过程。

  1. A先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
  2. 若B回复NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty,即删除表项。
  3. 经过邻居可达时间,邻居状态由Reachable变为Stale,即未知是否可达。
  4. 如果在Reachable状态,A收到B的非请求NA报文,且报文中携带的B的链路层地址和表项中不同,则邻居状态马上变为Stale。
  5. 在Stale状态若A要向B发送数据,则邻居状态由Stale变为Delay,并发送NS请求。
  6. 在经过一段固定时间后,邻居状态由Delay变为Probe,其间若有NA应答,则邻居状态由Delay变为Reachable。
  7. 在Probe状态,A每隔一定时间间隔发送单播NS,发送固定次数后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty,即删除表项。

重复地址检测(DAD)

在进行DAD检测时,一个IPv6单播地址在分配给一个接口之后且通过重复地址检测之前称为试验地址(Tentative Address)。此时该接口不能使用这个试验地址进行单播通信,但是仍然会加入两个组播组:ALL-NODES组播组和实验地址所对应的Solicited-Node组播组。
IPv6重复地址检测技术和IPv4中的免费ARP类似:节点向一个自己将使用的试验地址所在的Solicited-Node组播组发送一个以该实验地址为请求的目标地址的NS报文,如果收到某个其他站点回应的NA报文,就证明该地址已被网络上使用,节点将不能使用该实验地址通讯。

  • 基于ICMPv6实现
  • 包括NS报文和NA报文
  • 发送NS(135) 源IP “::”,目标请求节点组播地址 。回应NA(136 )源是自己的地址,目标FF02::1(所有节点组播地址)

路由发现

  • 发现与本地链路相连的路由器
  • 获取与地址自动配置相关的前缀和其他配置参数
  • 包括RA(133)和RS(134)报文
# 配置接口发送RA报文,华为默认是不会发送RA报文,思科默认会发送,缺省是200秒
interface GigabitEthernet0/0/1
ipv6 enable 
ipv6 address 2001:10:10:10::1/64 
undo ipv6 nd ra halt          

# 配置路由器通过无状态方法来获取IPv6的地址, 如果需要自动生成一条默认路由可以加上参数default
interface GigabitEthernet0/0/0
ipv6 enable 
ipv6 address auto global  # default     
ipv6 nd ra preference high     # 配置RA报文的优先级

主机获得前缀及其他参数过程

  • 当存在以下情况时忽略RA发送的前缀:
    • RA报文选项中的“auto”未置位。
    • 前缀与已有地址前缀重复(包括link-local地址)。
    • RA报文选项中的“preferred lifetime”时间大于 “ valid lifetime ”。
    • 前缀长度与接口ID长度之和不等于128位。
  • 除以上情况外,主机获得前缀同时也获得一些相关时间参数:
    • “preferred lifetime”=发起新通讯的有效时间。
    • “ valid lifetime ”=原有通讯的有效时间。
  • 主机会周期性的收到RA报文,并据此报文来更新自己的时间参数

几个生存时间

  • 当地址处于Deprecated状态,地址不能主动的发起连接只能是被动的接受连接,这也是为了保证上层应用而设计的,但是过了valid lifetime时间,地址就变味invalid,这时任何连接都会down掉
    几个生存时间

标志位

  • M位
    • 有状态(M=1)地址配置:通过DHCPv6服务器获取IPv6地址ipv6 nd autoconfig managed-address-flag #配置M位=1
    # 配置使用有状态方法获取到IPv6地址
    # AR5
    interface GigabitEthernet0/0/0
    ipv6 enable 
    ipv6 address auto link-local
    ipv6 address auto dhcp
    
    • 无状态(M=0)地址配置:通过RA报文的前缀加上自己EUI-64生成的主机位,形成一个IPV6地址
    # 无状态自动分配
    # AR1,配置地址池
    dhcpv6 pool HCIP
    address prefix 2001:10:10:10::/64
    excluded-address 2001:10:10:10::1 to 2001:10:10:10::100
    dns-server 2001:10:10:10::1
    dns-domain-name qytang.com
    q
    dhcp enable
    interface GigabitEthernet0/0/1 #接口调用
    ipv6 enable 
    ipv6 address 2001:10:10:10::1/64 
    ipv6 nd ra Min-interval 10 
    undo ipv6 nd ra halt
    ipv6 nd autoconfig other-flag
    dhcpv6 server HCIP  #使用地址池HCIP
    
  • O位(Other-Config-Flag)
    • O=0(默认),表示主机不应该使用有状态自动配置机制来配置除了IPv6地址外的其他参数。
    • O=1,使用命令:ipv6 nd autoconfig other-flag将该值置1,则主机需使用DHCPv6来配置除了IPv6地址外的其他信息,如DNS,域名等。
      O=1需要和M=0配合使用,即通过M=0获取一个地址,通过O=1获取域名等

地址配置方法

  1. 手动配置
    手动配置IPv6地址/前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)
  2. 无状态自动地址分配
    由接口ID生成链路本地地址,再根据路由通告报文RA(Router Advertisement)包含的前缀信息自动配置本机地址。
  3. 有状态自动地址分配,即DHCPv6方式。DHCPv6又分为如下两种:
    1. DHCPv6有状态自动分配(分为四步交互(默认)和两步交互(使能命令:ipv6 address auto dhcp rapid-commit))。
      DHCPv6服务器自动分配IPv6地址/PD前缀及其他网络配置参数(DNS、NIS、SNTP服务器地址等参数)。
    2. DHCPv6无状态自动分配。
      主机IPv6地址仍然通过路由通告方式自动生成,DHCPv6服务器只分配除IPv6地址以外的配置参数,包括DNS、NIS、SNTP服务器等参数。

地址配置过程

  1. 接口初始化
  2. 接口产生“tentative“的link-local地址
  3. 对“tentative”地址进行地址重复检测(DAD)
  4. 接口产生link-local地址,具备IP连接能力
  5. 由Router Advertisement报文的M比特决定采用何种自动配置技术
    无状态自动配置(stateless autoconfiguration)-利用RA信息通告的前缀生成地址
    有状态自动配置(stateful autoconfiguration)-必须通过DHCP获得,称为有状态
  6. 获得全局地址

Path MTU

为了避免切片,查找整条链路的最小MTU。

重定向

当路由器收到一个报文后,只有在如下情况下,路由器会向报文发送者发送重定向报文:

  • 报文的目的地址不是一个组播地址。
  • 报文并非通过路由转发给路由器。
  • 经过路由计算后,路由的下一跳出接口是接收报文的接口。
  • 路由器发现报文的最佳下一跳IP地址和报文的源IP地址处于同一网段。
  • 路由器检查报文的源地址,发现自身的邻居表项中有用该地址作为全球单播地址或链路本地地址的邻居存在。

OSPFv3

OSPFv2基本概念

LSA类型

LSA类型 LSA作用
Router-LSA (Type1) 每个设备都会产生,描述了设备的链路状态和开销,在所属的区域内传播。
Network-LSA (Type2) 由 DR 产生,描述本网段的链路状态,在所属的区域内传播。
Network-summary-LSA (Type3) 由 ABR 产生,描述区域内某个网段的路由,并通告给发布或接收此 LSA的非 Totally STUB 或 NSSA 区域。
ASBR-summary-LSA (Type4) 由 ABR 产生,描述到 ASBR 的路由,通告给除 ASBR 所在区域的其他相关区域。
AS-external-LSA (Type5) 由 ASBR 产生,描述到 AS 外部的路由,通告到所有的区域(除了 STUB区域和 NSSA 区域)。
NSSA LSA (Type7) 由 ASBR 产生,描述到 AS 外部的路由,仅在 NSSA 区域内传播。
Opaque LSA (Type9/Type10/Type11) Opaque LSA 提供用于 OSPF 的扩展的通用机制。其中:Type9 LSA仅在接口所在网段范围内传播。用于支持 GR 的 Grace LSA就是 Type9 LSA 的一种。Type10 LSA 在区域内传播。用于支持 TE 的 LSA 就是 Type10 LSA 的一种。Type11 LSA 在自治域内传播,目前还没有实际应用的例子。

OSPFv3介绍

协议介绍

  • 与OSPFv2相比, OSPFv3在工作机制上与OSPFv2基本相同;但为了支持IPv6地址格式, OSPFv3对OSPFv2做了一些改动。
  • OSPFv3基于OSPFv2基本原理并增强,是一个独立的路由协议。
  • 协议号仍然是89,Router Id仍然是一个32位的无符号整数。
    协议介绍

IPv6对OSPFv3的影响

IPv6对OSPFv3的影响

OSPFv3和OSPFv2相同点

  • 网络类型和接口类型。
  • 接口状态机和邻居状态机。
  • 链路状态数据库(LSDB)。
  • 洪泛机制
  • 五种协议报文: Hello, DD, LSR, LSU, LSAck。
  • 路由计算基本相同。

OSPFv3与OSPFv2的不同

  • OSPFv3基于链路的运行,而不是基于子网的
  • OSPFv3使用链路本地地址,移除了IP地址的意义
  • OSPFv3链路支持多实例复用,支持一个链路上多个实例
  • OSPFv3通过Router ID唯一标识邻居
  • OSPFv3的LSA报文里添加LSA的洪泛范围
  • 认证的变化,OSPFv3移除所有认证字段
  • Stub区域的支持
  • Option字段的不同
  • 报文的不同
  • LSA的类型和内容不同,新增两种LSA

特点

报文
  • OSPFv3协议号仍然为89,在IPv6 Next Header里标识。
  • 通过包头的TYPE字段来标识5种包类型;
  • 以组播地址发送协议报文,而IPv6 Hop Limit为1;Virtual-Link则通过单播发送更新;
    AllSPfRouters:FF02::5
    AllDRouters:FF02::6
  • IPv6中,除了virtual link之外,都使用link-local地址(源是link-local地址,目的是组播地址
基于链路的运行
  • OSPFv2是基于网络运行的,两个路由器要形成邻居关系必须在同一个网段。
  • OSPFv3的实现是基于链路, 一个链路可以划分为多个子网, 节点即使不在同一个子网内, 只要在同一链路上就可以直接通信(实验一的R5和R6)
使用链路本地地址
  • OSPFv3的路由器使用链路本地地址作为发送报文的源地址
  • 在虚连接上, 必须使用全球范围地址或者站点本地地址作为OSPFv3协议报文的源地址。
  • 由于链路本地地址只在本链路上有意义且只能在本链路上泛洪,因此链路本地地址只能出现在Link LSA中
链路支持多实例复用

OSPFv3支持在同一链路上运行多个实例(instance),实现链路复用并节约成本
OSPFv3一个接口能不能配置多个实例?条件:同一个进程只能配置一个实例,如果是不同进程可以配置多个

通过Router ID唯一标识邻居

在OSPFv2中,当网络类型为点到点或者通过虚连接与邻居相连时,通过Router ID来标识邻居路由器,当网络类型为广播或NBMA时,通过邻居接口的IP地址来标识邻居路由器。
OSPFv3取消了这种复杂性,无论对于何种网络类型,都是通过Router ID来唯一标识邻居。

认证的变化
  • 验证的变化:OSPFv3报文头中不再包含AuType和Authentication,而一般依赖IPv6的扩展验证头
  • 校验和(Checksum)变化:OSPFv3使用IPv6标准的CheckSum
Stub区域的支持

由于OSPFv3支持对未知类型LSA的泛洪,为防止大量未知类型LSA泛洪进入Stub区域,对于向Stub区泛洪的未知类型LSA进行了明确规定, 只有当未知类型LSA的泛洪范围是区域或链路而且U比特没有置位时,未知类型LSA才可以向Stub区域泛洪。

报文格式

头部字段说明

头部字段说明
  • Version:版本,对于OSPFv2,该值是2;对于OSPFv3则是3;
  • Type:1 - Hello, 2-DD, 3-LSR, 4-LSU, 5-LSAck;
  • Packet Length:OSPFv3报文长度,2字节;
  • Router ID:路由器ID;
  • Area ID:区域ID;
  • Checksum:校验和;
  • Instance ID:链路实例ID,通过判断该字段就可以区分同一链路上运行的不同OSPF实例。实例ID只在本地链路范围内具有意义
  • Reserved(保留): 保留字段,总是0。

Hello报文

Hello报文
  • Hello 报文的不同:与 OSPFv2 Hello 报文相比, OSPFv3 Hello 报文去掉了网络掩码字段,增加了 Interface ID 字, 用来标识发送该 Hello 报文的接口ID。
  • Instance ID: 4字节。报文发送者的发送接口标识,仅用来区分同一路由器上的不同接口,不包含地址信息。
  • Rtr Pri: 1字节。路由器优先级,优先级高者成为DR。
  • Options: 3字节。 OSPFv3中将Options字段扩展为24位。
    OSPFv3选项Options
    在OSPFv2中, Option字段出现在每一个Hello报文、 DD报文以及每一个LSA中;在 OSPFv3中, Option字段只在 Hello报文、 DD报文、 Router LSA、 NetworkLSA、 Inter Area Router LSA以及Link LSA中出现,从上图可以看出,与OSPFv2相比, OSPFv3的Option字段增加了R比特、 V比特
  • R:用来标识设备是否是具备转发能力的路由器。如果 R 比特置 0,宣告该节点的路由信息将不会参加路由计算,如果当前设备是一个不想转发非本地地址的报文,可以将 R 比特置 0。
  • V6:如果 V6 比特置 0,该路由器或链路也不会参加IPv6路由计算。
  • E: 如果为0,不支持AS-External-LSA洪泛,如果E位设置不正确,邻接关系就不能形成;
  • MC: 与多播相关;
  • N: 是否在NSSA区域(Type-7 LSA),当且仅当一个接口的所属区域为NSSA区域时设置为1;
  • DC: 是否支持按需拨号。
    Options字段的各位的匹配情况会产生不同影响
  • 阻止邻居的建立,例如Hello报文中的选项不匹配。
  • 阻止LSA的洪泛,例如E-Bit,如果为0,不洪泛AS-External-LSA。
  • 阻止LSA参加路由计算,例如V6-Bit,如果为0,该Router不参加IPv6路由计算。
    Options字段使OSPF路由器能支持可选的能力,并且与其它路由器互相通告其能力。通过这种机制,具有不同能力的路由器可以在一个OSPF路由域中混合工作

LSA头部

LSA头部
  • OSPFv2中的LS Type长度为8比特,指定LSA的类型; OSPFv3的LSA Type字段由OSPFv2的8比特扩充为16比特。
    • U 位:描述了路由器收到一个类型未知的 LSA 时如何处理,取值为 0 表示把类型未知LSA 当成具有链路本地范围的 LSA 一样处理,取值为** 1 表示按照S2/S1 位标识的泛洪范围来处理**。
    • S2/S1 位:共同标识 LSA 的泛洪范围,取值 00 表示 LSA 只在产生该 LSA 的本地链路上泛洪;取值** 01 表示 LSA 的泛洪范围为产生该 LSA 的路由器所在区域**;取值 10 表示 LSA 将在整个自治系统内进行泛洪;取值 11 保留
    • LSA Function Code: LSA 类型编码,描述 LSA 的类型。

支持对未知类型LSA的处理

  • U-bit: 指示路由器如何处理无法识别的LSA
    U-bit
  • S2/S1,共同标识 LSA 的泛洪范围
    S2/S1
    不同的LSA类型对应不同的U, S2和S1位
    OSPFv2中,收到类型未知的LSA将直接丢弃,OSPFv3在LSA的LS Type字段中增加了一个U比特位来位标识对未知类型LSA的处理方式:
  • 如果 U 比特置 1,则对于未知类型的 LSA 按照 LSA 中的 LS Type 字段描述的泛洪范围进行泛洪;
  • 如果 U 比特置 0,对于未知类型的 LSA 仅在链路范围内泛洪。
    LSA的泛洪范围已经被明确地定义在LSA的LS Type字段,目前,有三种LSA泛洪范围
  • 链路本地范围(Link-local Scope):LSA 只在本地链路上泛洪,不会超出这个范围, Link-LSA(新增)
  • 区域范围(Area Scope):Router-LSA, Network-LSA, Inter-Area-Prefix-LSA, Inter-Area-Router-LSA, Intra-Area-Prefix-LSA(新增)都是区域范围泛洪的 LSA。
  • 自治系统范围(AS Scope):LSA 将被泛洪到整个路由域,AS-External-LSA。

功能编码

功能编码

4字节。不再包含地址信息,对于不同的LSA类型,该字段的含义如下表,同时提供与OSPFv2中含义的对比。
Link State ID

LSA的类型简述

LSA的类型
OSPFv3新增了Link LSA和Intra Area Prefix LSA。

  • Router LSA 不再包含地址信息,使能 OSPFv3 的路由器为它所连接的每条链路产生单独的 Link LSA,将当前接口的链路本地地址以及路由器在这条链路上的一系列 IPv6 地址信息向该链路上的所有其它路由器通告。
  • Router LSA 和 Network LSA 中不再包含路由信息,这两类 LSA 中所携带的路由信息由 Intra Area Prefix LSA 来描述,该类 LSA 用来公告一个或多个IPv6 地址前缀。

Prefix Option 字段

Prefix Option 字段
在OSPFv2中,使用“IP网段+掩码”来表示前缀信息,而且两段信息在不同LSA中的位置还各不相同,结构很不清晰。在OSPFv3的LSA中,使用专门的三元组(Prefix-Length, PrefixOptions, Prefix)来表示前缀信息。由LSA公告的每个前缀都拥有一个自己的PrefixOptions 字段。

  • Prefix-Length:1字节。前缀的bit位长度,对于缺省路由该字段取值为0。
  • PrefixOptions:1字节。前缀信息的选项,用来描述前缀的某些特殊属性字段,格式如下:
    • NU位:非单播位。如果设置为1,则这个前缀不会纳入IPv6单播路由计算中。
    • LA位:本地地址位。如果设置为1,则这个前缀是路由器的一个接口地址。
    • MC位:组播位。如果设置为1,则这个前缀应该纳入组播计算中,否则不纳入组播计算。
    • P位:传播位。如果一个NSSA区域的前缀需要被ABR传播出去,就需要设置这一位。
  • Prefix:长度不定,为4字节的倍数。用于表示前缀的IPv6网络地址信息。
    Prefix-length可变,但必须是32bit(4字节)的整数倍,可用0来填充。因此它的长度可能是0、4、8、12、16字节。

LSA分类

LSA类型

Router LSA(Type1)

Router LSA
此类LSA同ospfv2相比并不包含前缀信息

  • LS Type:0x2001,泛洪范围为Area。
  • 每个Router-LSA包含若干链路描述 ,每个链路描述都描述了路由器的一个接口信息。
  • 可以使用多个Router-LSA描述信息,通过Link-State ID区分多个不同的Router-LSA。
  • W:用于组播路由;
  • V:该路由器为虚连接的一端;
  • E:该路由器为ASBR;
  • B:该路由器为ABR。
  • Type:1字节。路由器的该链路的链路类型;
  • Metric:2字节。数据报文从此接口发出时的cost值;
  • Interface ID:4字节。接口ID,用于标识接口,无地址含义。
  • Neighbor Interface ID:4字节。邻居接口ID。
  • Neighbor Router ID:4字节。邻居Router ID。
Router LSA链接(Link)类型
 Router LSA链接

Network LSA(Type2)

Network LSA
  • DR产生,LS Type:0x2002,泛洪范围为Area;
  • 描述该链路上与DR有FULL关系的所有路由器。
  • Attached Router:
    • 每个路由器4字节。该链路上所有与DR有Full关系的路由器的Router ID
    • OSPFv3的Network-LSA具有区域泛滥范围,由DR生成。它的Link State ID为DR的Interface ID,而且将OSPFv2中的掩码字段取消了,所以它不再包含前缀信息,而仅仅描述了拓扑连接情况。
    • 由于其中的Options字段为链路上所有路由器的能力集合,因此DR的能力大小并不会影响其他路由器的LSA传播。

Inter-Area-Prefix-LSA(Type3)

Inter-Area-Prefix-LSA
  • ABR产生,LS类型值为0x2003,泛洪范围为Area。
  • 在IPv4中,Inter-Area-Prefix-LSA称为Type 3 Summary-LSA。
  • Metric:20bit。表示ABR到达该前缀描述的路由的cost值。
  • 前缀信息:描述前缀的Prefix三元组。

在OSPFv2中,该类型的LSA称为Type 3 Summary-LSA。在OSPFv3中,更名为Inter-Area Prefix-LSA,语义更加明确,它描述了其他区域的前缀信息:

  • 边界路由器(ABR)产生的第3类LSA,在Area范围内洪泛
  • 描述了到本AS内其他区域的路由信息;
  • 每个Inter-Area-Prefix-LSA包含一条地址前缀信息;
  • 该LSA中不包含Link-Local地址信息;
  • 使用32位整数作为Link State ID来区分同一路由器产生的不同LSA。

Inter-Area-Router-LSA(Type4)

 Inter-Area-Router-LSA
  • LS Type:0x2004,泛洪范围为Area
  • Options:3字节,并非生成LSA的路由器的能力描述,而是描述了目的ASBR的能力。
  • Metric:3字节,表示ABR到目的ASBR路由器的cost值。
  • Destination Router ID:4字节,目的ASBR路由器的Router ID。

OSPFv2中,该类型的LSA称为Type 4 Summary-LSA。在OSPFv3中,更名为Inter-Area Router-LSA,语义更加明确,它描述了到达其他区域的ASBR的信息:

  • 边界路由器(ABR)产生的第4类LSA,在Area范围内洪泛;
  • 描述了到本AS内其他区域的ASBR路由器信息;
  • 每个Inter-Area-Router-LSA包含一个ASBR路由器信息;
  • LSA中的能力选项(Options)与所描述的ASBR Router LSA中能力选项(Options)保持一致;
  • 使用32位整数作为Link State ID来区分相同的LSA。

AS-External-LSA(Type5)

AS-External-LSA
  • 外部路由LSA,ASBR生成,LS类型值为0x4005,泛洪范围为AS
  • 每个AS-External-LSA描述到达自治系统外部的一个前缀的路径,每个AS-external-LSA包含一条地址前缀信息,且不能包含本地链路地址信息
  • E:外部路由的Metric类型。如果设置为1,表示此为2类外部路由,其Metric不随着路由的传递而增长。如果设置为0,表示此为1类外部路由,其Metric随着路由的传递而增长。
  • F:如果设置为1,则表示后面的Forwarding Address可选字段存在。
  • T:如果设置为1,则表示后面的External Route Tag可选字段存在。
  • 前缀信息:描述前缀的Prefix三元组。
  • Ref LS Type:2字节。如果非0,则表示后面的Referenced Link State ID可选字段存在。
  • Forwarding Address:16字节。可选的128位IPv6地址。当前面的F位为1时存在。表示到达目的的数据应该转发到这个地址。在公告路由器不是最优的下一跳的时候可以使用。
  • External Route Tag:4字节。可选的标记位。可以用于ASBR之间的通信。一个比较常见的例子是,在OSPF自治系统的两个边界路由器上进行路由分发时,通过对引入的路由进行标记,可以很方便地进行路由过滤。
  • Referenced Link State ID:4字节。当前面的Ref LS Type字段非0时存在。如果存在,说明此条外部路由有一些相关信息需要参考另外一个LSA。被参考的LSA由以下字段值确定:
    • 其LS type等于此AS-external-LSA的Referenced LS Type;
    • 其Link State ID等于此AS-external-LSA的Referenced Link State ID;
    • 其Advertising Router等于此ASexternal-LSA的Advertising Router。
      这种参考能力是为未来的扩展准备的,目前并没有使用

该类LSA仅在本链路上传播,具有以下3种目的:

  1. 向本链路上的其他路由器通告本地链路地址,作为他们的下一跳地址
  2. 向本链路上的其他路由器通告本地上的所有IPv6地址前缀
  3. 允许路由器在该类型LSA中插入一些选项比特,与为本链路产生的网络LSA相关联(在广播网络和NBMA瓦洛洛上为DR提供Options取值)
    Link-LSA
  • Rtr Pri: 该路由器在该链路上的 优先级(Router Priority用于选举 DR);
  • Options: 提供给Network LSA的 Options;
  • Link Local Interface Address: 路由器与该链路相连的接口上配置的Link Local地址(Link Local地址只出现在Link LSA中);
  • Prefix: 该LSA中携带了多个IPv6地址Prefix;

Intra-Area-Prefix-LSA(Type9)

为什么引入Intra-Area-Prefix-LSA?

OSPFv2中,依附于路由器和Stub网络的subnet出现在Router LSA中,依附于Transit网络的subnet出现在Network-LSA中;OSPFv3中,Router-LSA和Network-LSA不再包含地址信息,所以引入Intra-Area-Prefix-LSA。

Intra-Area-Prefix-LSA携带区域内IPv6 Prefix信息。

依附于路由器的Prefix
依附于Stub网络的Prefix
依附于Transit网络的Prefix

 Intra-Area-Prefix-LSA
每台路由器或Transit网络可以 产生多个Intra-Area-Prefix-LSA

  • 域间前缀LSA,LS Type:0x2009,泛洪范围为Area
  • #Prefixes:LSA中包含的Prefix个数。
  • Referenced Link State Type:
    • 1: 携带的Prefix依附于Router(包括Stub网络)
    • 2: 携带的Prefix依附于Transit Network
  • Referenced Link State ID:
    • Type1: 0
    • Type2:DR接口ID
  • Referenced Advertising Router:
    • Type 1:依附的路由器Router ID
    • Type 2:DR Router ID
  • Metric:20bit。表示ABR到达该前缀描述的路由的cost值。
  • 前缀信息:描述前缀的Prefix三元组。

ISISv3

概述

  • ISIS是一种IGP协议,ISIS使用SPF算法计算路由。
  • ISIS的报文采用TLV结构,因此扩展性很好。为支持新的协议和特性,只需要扩展新的TLV或子TLV。可以轻松扩展支持IPv6,TE,MT等协议和特性。IS-IS对IPv6的支持不需要对协议做大的改动,因此协议的继承性很好;不像OSPF,为支持IPv6需要开发全新的协议OSPFv3。
  • IS-IS通过新增TLV以实现对IPv6的支持。236号TLV,定义路由信息前缀、度量值等信息来说明网络的可达性。232号TLV,相当于IPv4中的“IP Interface Address”TLV,只不过把原来的32比特的IPv4地址改为128比特的IPv6地址,描述接口信息

IPv6 Reachability

类型值为236(0xEC),通过前缀、度量、标记 等来描述可达的IPv6前缀信息。在IPv4中有IPv4内部可达性TLV和IPv4 外部可达性TLV,在IPv6的扩展当中使用一个“X”bit来区分“内部” 和“外部”。
IPv6 Reachability

  • U:up/down bit ,标识这个前缀是否是从高level通告下来的(用来防环路)。
  • X:external original bit ,标识这个前缀是否是从其他路由协议中引入过来的。
  • S:subtlv present bit,子TLV标识位。(可选)

IPv6 Interface Address

类型值为232(0xE8),它相当于IPv4中的 “IP Interface Address” TLV,只不过把原来的32比特的IPv4地址 改为128比特的IPv6地址。
IPv6 Interface Address

  • 这个TLV结构是直接从TLV132映射过来的,因此,原来TLV132最多可以64个IP地址(32位),在TLV232中,最多只能有16个IPv6地址(128位)。
  • 在不同的PDU中,这个字段的内容是不同的,在hello PDU中,“接 口地址TLV”只能包含发送hello包的接口的Link-local地址;对于LSP,“接口地址TLV”只能包含IS的non-link-local IPv6(即全局单播地址)

ST单拓扑

IS-IS为所有协议维护相同的SPT,IPv4和IPv6的拓扑必须一致
ST单拓扑

不足之处

  • 网络可维护性的需求在目前的运营商中越来越被重视,独立拓扑的维护网络, 即带内维护网络的需求开始出现。
  • IS-IS为所有协议维护相同的SPT,这意味着IPv4和IPv6的拓扑必须一致

存在问题

  • 不适合分离拓扑的网络部署。
  • 为维护相同的拓扑,所有接口都必须同时运行IS-IS IPv4和IS-IS IPv6,部署不
    灵活。
  • 不能使用IPv4区域来链接不同的IPv6区域,否则IPv4区域会丢弃IPv6的流量

ISIS对MT多拓扑的支持

ISIS对MT多拓扑的支持
  • MT可以使ISIS在一个路由域中维护多个拓扑
  • 如果支持MT,ISIS可以为IPv4和IPv6维护分离的拓扑
  • 重要的是,使用MT,IPv4和IPv6的拓扑就不需要一样了

MT(多拓扑):分离的拓扑

ISIS路由协议主要可以分为以下几个方面:邻居的建立,路由可达(Prefix Reachable)与路由器可达(IS Reachable)的发布,SPF计算以及路由计算。
为了达到多拓扑的相互隔离,以上几个方面均要求携带MT参数以满足这一要求(SPF计算与路由计算在路由器内识别完成)。于是,draft-ietf-isis-wg-multi-topology-11中定义了四种新的TLV分别满足以
上过程,实现了通用环境下的ISIS MT的交互过程。
使能ISIS进程多拓扑:[Huawei-isis-1]ipv6 enable topology ipv6
接口上使能ISIS:[Huawei-GigabitEthernetX/Y/Z]isis ipv6 enable
查看ISIS邻居关系:[Huawei]dis isis peer
查看ISIS路由:[Huawei]dis isis route
新增四个TLV

  1. TLV229:Multi-Topology Identifier
  2. TLV222:Multi-Topologies Intermediate System
  3. TLV235:Multi-Topologies Reachable IPv4 Prefixes
  4. TLV237:Multi-Topologies Reachable IPv6 Prefixes

IPv6过渡技术

IPv6过渡技术
  • IPv6与IPv4共存技术:
    • 双协议栈:
      • IPv6节点同时支持IPv6和IPv4协议栈。
    • 隧道:
      • IPv6报文作为IPv4的载荷,由IPv4 Internet中连接多个IPv6孤岛。
  • IPv6与IPv4互通技术:
    • 提供IPv6与IPv4互相访问的技术。
    • 适用于IPv6 Internet与IPv4 Internet共存,而两者又有互相通讯的需求。

双栈协议

双栈协议
所有设备必须支持IPv4/IPv6协议栈,连接双栈网络的接口必须同时配置IPv4地址和IPv6地址

IPv6 over IPv4隧道技术

 IPv6 over IPv4隧道技术
通过隧道技术,使IPv6报文在IPv4网络中传输,实现IPv6网络之间的孤岛互连
IPv6 over IPv4隧道分类

  1. 手动隧道包括手动隧道和GRE隧道;
  2. 自动隧道包括IPv4兼容IPv6自动隧道、6to4隧道和ISATAP隧道

6over4手动隧道

6over4手动隧道
  • 如果一个边界设备要与多个设备建立手动隧道,就需要在设备上配置多个隧道,配置比较麻烦。所以手动隧道通常用于边界路由器与边界路由器,或者主机与边界路由器之间,为两个IPv6网络提供连接。
  • 手动隧道优缺点
    • 优点:可以用于任何IPv6穿越IPv4的环境,通用性好。
    • 缺点:必须手工配置,源地址和目的地址均需手工指定。
  • 转发机制
    • IPv6 over IPv4手动隧道转发机制为:当隧道边界设备的IPv6侧收到一个IPv6报文后, 根据IPv6报文的目的地址查找IPv6路由转发表,如果该报文是从此虚拟隧道接口转发出去,则根据隧道接口配置的隧道源端和目的端的IPv4地址进行封装。封装后的报文变成一个IPv4报文,交给IPv4协议栈处理。报文通过IPv4网络转发到隧道的终点。隧道终点收到一个隧道协议报文后,进行隧道解封装。并将解封装后的报文交给IPv6协议栈处理。

GRE隧道

GRE隧道
6over4手动隧道的一种,手工指定隧道的端点地址,GRE承载IPv6协议。

IPv4兼容IPv6

IPv4兼容IPv6
  • IPv6 over IPv4隧道自动隧道的一种
  • 采用IPv4兼容地址,即::IPv4/96
  • 每台主机须有合法的IP地址
    IPv4兼容IPv6自动隧道,其承载的IPv6报文的目的地址(即自动隧道所使用的的特殊地址)是IPv4兼容IPv6地址。IPv4兼容IPv6地址的前96位全部为0,后32位为ipv4地址。
    缺点:由于IPv4兼容IPv6隧道要求每一个主机都要有一个合法的IP地址,而且通讯的主机要支持双栈、支持IPv4兼容IPv6隧道,不适合大面积部署,目前已经被6to4隧道所取代

6to4隧道

1

6to4隧道1
6over4自动隧道的一种,支持Router到Router、Host到Router、Router到Host、 Host到Host,采用6to4专用地址,即2002:IPv4::/48。
地址格式

  • FP:可聚合全球单播地址的格式前缀(Format Prefix),其值为001。
  • TLA:顶级聚合标识符(Top Level Aggregator),有13个比特位,其二进制值为0 0000 0000 0010。
  • SLA:站点级聚合标识符(Site Level Aggregator)。

6to4地址可以表示为2002::/16,而一个6to4网络可以表示为2002:IPv4地址::/48。6to4地址的网络前缀长度为64bit,其中前48bit(2002: a.b.c.d)被分配给路由器上的IPv4地址决定了,用户不能改变,而后16位(SLA)是由用户自己定义的。

2

6to4隧道2
可连接多个6to4网络,通过SLA ID区分。
一个IPv4地址只能用于一个6to4隧道的源地址,如果一个边界路由器连接了多个6to4网络使用同样的IPv4地址做为隧道的源地址,则使用6to地址中的SLA ID来区分,但他们共用一个隧道。

3

6to4隧道3
6to4中继,实现6to4网络和IPv6普通网络互通。
普通IPv6网络需要与6to4网络通过IPv4网络互通,这可以通过6to4中继路由器方式实现。所谓6to4中继,就是通过6to4隧道转发的IPv6报文的目的地址不是6to4地址,但转发的下一跳是6to4地址,该下一跳为路由器我们称之为6to4中继。隧道的IPv4目的地址依然从下一跳的6to4地址中获得。
如果6to4网络2中的主机要与IPv6网络互通,在其边界路由器上配置路由指向的下一跳为6to4中继路由器的6to4地址,中继路由器的6to4地址是与中继路由器的6to4隧道的源地址相匹配的。6to4网络2中去往普通IPv6网络的报文都会按照路由表指示的下一跳发送到6to4中继路由器。6to4中继路由器再将此报文转发到纯IPv6网络中去。当报文返回时,6to4中继路由器根据返回报文的目的地址(为6to4地址)进行IPv4报文头封装,数据就能够顺利到达6to4网络中了。

ISATAP隧道

ISATAP隧道
6over4自动隧道的一种,支持Host到Router、Router到Host、 Host到Host,采用ISATAP隧道专用地址

  • ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是另外一种自动隧道技术。ISATAP隧道同样使用了内嵌IPv4地址的特殊IPv6地址形式,只是和6to4不同的是,6to4是使用IPv4地址做为网络前缀,而ISATAP用IPv4地址做为接口标识。
  • 地址描述
    • 如果IPv4地址是全局唯一的,则u位为1,否则u位为0。g位是IEEE 群体/个体标志。由于ISATAP是通过接口标识来表现的,所以,ISATAP地址有全局单播地址、链路本地地址、ULA地址、组播地址等形式。ISATAP地址的前64位是通过向ISATAP路由器发送请求来得到的,它可以进行地址自动配置。在ISATAP隧道的两端设备之间可以运行ND协议。ISATAP隧道将IPv4网络看作一个非广播的点到多点的链路(NBMA)。
  • 转发过程描述:
    • 在IPv4网络内部有两个双栈主机PC2和PC3,它们分别有一个私网IPv4地址。要使其具有ISATAP功能,需要进行如下操作:
      • 首先配置ISATAP隧道接口,这时会根据IPv4地址生成ISATAP类型的接口ID。
      • 根据接口ID生成一个ISATAP链路本地IPv6地址,生成链路本地地址以后,主机就有了在本地链路上进行IPv6通信的能力。
      • 进行自动配置,主机获得IPv6全球单播地址、ULA地址等。
      • 当主机与其它IPv6主机进行通讯时,从隧道接口转发,将从报文的下一跳IPv6地址中取出IPv4地址作为IPv4封装的目的地址。如果目的主机在本站点内,则下一跳就是目的主机本身,如果目的主机不在本站点内,则下一跳为ISATAP路由器的地址。

NAT64

NAT64
NAT64技术实际上是一种协议转换技术,能够将分组在V4及V6格式之间灵活转换。IPv6过渡中的协议翻译技术就是将IPv6数据包的每个字段与IPv4数据包中的字段建立起一一映射的关系,从而在两个网络的边缘实现数据报文的转换。

实验

实验一:OSPFv3

OSPFv3
# .......................初始化配置
# AR1
sys
sys AR1
ospfv3 10 
router-id 1.1.1.1
q
ipv6
int g/0/0
ipv6 enable 
ipv6 addr 2001:1234::1 64
ospfv3 10 area 10
int lo 0
ipv6 enable
ipv6 addr 2002:1::1 128
ospfv3 10 area 10
# AR2
sys
sys AR2
ospfv3 10 
router-id 2.2.2.2
q
ipv6
int g/0/0
ipv6 enable 
ipv6 addr 2001:1234::2 64
ospfv3 10 area 10
int lo 0
ipv6 enable
ipv6 addr 2002:1::2 128
ospfv3 10 area 10
# AR3
sys
sys AR3
ospfv3 10 
router-id 3.3.3.3
q
ipv6
int g/0/0
ipv6 enable 
ipv6 addr 2001:1234::3 64
ospfv3 10 area 10
int lo 0
ipv6 enable
ipv6 addr 2002:1::3 128
ospfv3 10 area 10
# AR4
sys
sys AR4
ospfv3 10 
router-id 4.4.4.4
q
ipv6
int g/0/0
ipv6 enable 
ipv6 addr 2001:1234::4 64
ospfv3 10 area 10
int lo 0
ipv6 enable
ipv6 addr 2002:1::4 128
ospfv3 10 area 0
int s1/0/0
ipv6 enable
ipv6 addr 2001:45::4 64
ospfv3 10 area 0
# AR5
sys
sys AR5
ospfv3 10 
router-id 5.5.5.5
q
ipv6
int g/0/0
ipv6 enable 
ipv6 addr 2001:56::5 64
ospfv3 10 area 20
int lo 0
ipv6 enable
ipv6 addr 2002:1::5 128
ospfv3 10 area 0
int s1/0/0
ipv6 enable
ipv6 addr 2001:45::5 64
ospfv3 10 area 0
# AR6
sys
sys AR6
ospfv3 10 
router-id 6.6.6.6
q
ipv6
int g/0/0
ipv6 enable 
ipv6 addr 2001:65::6 64
ospfv3 10 area 20
int lo 0
ipv6 enable
ipv6 addr 2002:1::6 128
ospfv3 10 area 20
q
isis
is-level level-2
network-entity 47.0067.666666666666.00
ipv6 enable
int g0/0/1
ipv6 enable
ipv6 addr 2001:67::6 64
isis ipv6 enable
# AR7
sys
sys AR7
isis
is-level level-2
network-entity 47.0067.777777777777.00
ipv6 enable
int g0/0/1
ipv6 enable
ipv6 addr 2001:67::7 64
isis ipv6 enable
int lo 0
ipv6 enable
ip addr 2002:1::7 128
isis ipv6 enable
int g0/0/1
ipv6 enable
ipv6 addr 2001:78::7 64
isis ipv6 enable
# AR8
sys
sys AR8
isis
is-level level-2
network-entity 47.0067.888888888888.00
ipv6 enable
int g0/0/0
ipv6 enable
ipv6 addr 2001:78::8 64
isis ipv6 enable
int lo 0
ipv6 enable
ip addr 2002:1::8 128
isis ipv6 enable
# .......................路由引入
#AR6
ospfv3 10
import-route isis 1
isis
ipv6 import-route ospfv3 10

实验二:ISIS双栈

ISIS双栈
#.........................初始化配置
# AR1
sys
sys AR1
isis
net 47.0123.111111111111.00
is-level level-2
ipv6 enable topology ipv6
int g0/0/0
ip add 12.1.1.1 24
isis enable
ipv6 enable
ipv6 addr 2001:12::1 64
isis ipv6 enable
int g0/0/1
ip add 13.1.1.1 24
isis enable
ipv6 enable
ipv6 addr 2001:13::1 64
isis ipv6 enable
int lo 0
ip add 1.1.1.1 32
isis enable
ipv6 enable
ipv6 addr 2002:1::1 128
isis ipv6 enable
# AR2
sys
sys AR2
isis
net 47.1234.222222222222.00
ipv6 enable topology ipv6
int g0/0/0
ip add 12.1.1.2 24
isis enable
ipv6 enable
ipv6 addr 2001:12::2 64
isis ipv6 enable
int g0/0/1
ip add 24.1.1.2 24
isis enable
ipv6 enable
ipv6 addr 2001:24::2 64
isis ipv6 enable
int g0/0/2
isis circuit-level level-2
ip add 23.1.1.2 24
isis enable
ipv6 enable
ipv6 addr 2001:23::2 64
isis ipv6 enable
int lo 0
ip add 2.2.2.2 32
isis enable
ipv6 enable
ipv6 addr 2002:2::2 128
isis ipv6 enable
# AR3
sys
sys AR3
isis
net 47.1234.333333333333.00
ipv6 enable topology ipv6
int g0/0/0
ip add 34.1.1.3 24
isis enable
ipv6 enable
ipv6 addr 2001:34::3 64
isis ipv6 enable
int g0/0/1
ip add 13.1.1.3 24
isis enable
ipv6 enable
ipv6 addr 2001:13::3 64
isis ipv6 enable
int g0/0/2
isis circuit-level level-2
ip add 23.1.1.3 24
isis enable
ipv6 enable
ipv6 addr 2001:23::3 64
isis ipv6 enable
int lo 0
ip add 3.3.3.3 32
isis enable
ipv6 enable
ipv6 addr 2002:3::3 128
isis ipv6 enable
# AR4
sys
sys AR4
isis
net 47.0234.444444444444.00
is-level level-1
ipv6 enable topology ipv6
int g0/0/1
ip add 24.1.1.4 24
isis enable
ipv6 enable
ipv6 addr 2001:24::4 64
isis ipv6 enable
int g0/0/2
ip add 34.1.1.4 24
isis enable
ipv6 enable
ipv6 addr 2001:34::4 64
isis ipv6 enable
int lo 0
ip add 4.4.4.4 32
isis enable
ipv6 enable
ipv6 addr 2002:4::4 128
isis ipv6 enable
#...............................................查看IPv4和IPv6的路由情况
# 查看邻居
dis isis peer
# 查看路由
dis ip rou pr isis
dis ipv6 rou pr isis
# 查看数据库
dis isis lsdb
# ..........................实现AR4中流量IPv4的走AR2、IPv6的走AR3
# AR4中ipv4和ipv6都有两条默认路由
# 方法:修改开销
# AR4
int g0/0/1
isis ipv6 cost 50 # 此时在AR4上ipv6的流量不在进行负载,由于g0/0/2默认开销10<g0/0/1开销50,所以IPv6的流量走g0/0/2
int g0/0/2
isis cost 50 #同理,ipv4的流量走g0/0/1
#...................路由的渗透
# AR2
import-route isis level-2 into level-1 tag 100
ipv6 import-route isis level-2 into level-1 tag 200
# AR3
import-route isis level-2 into level-1 tag 300
ipv6 import-route isis level-2 into level-1 tag 400
# AR1/2/3/4
isis
cost-style wide

实验三:6to4的手动隧道

6to4的手动隧道
#.........初始化配置,保证1.1.1.1和3.3.3.3通信(#AR1 ping -a 1.1.1.1 3.3.3.3)
# AR1
sys
sys AR1
int g0/0/0
ip add 12.1.1.1 24
ospf network-type p2p
int g0/0/1
ipv6 enable 
ipv6 addr 2001:123::1 64
int lo 0
ip addr 1.1.1.1 32
ospf 10 router 1.1.1.1
area 0
network 12.1.1.1 0.0.0.0
network 1.1.1.1 0.0.0.0
# AR2
sys
sys AR2
int g0/0/0
ip addr 12.1.1.2 24
ospf network-type p2p
int g0/0/1
ip addr 23.1.1.2 24
ospf network-type p2p
ospf 10 router 2.2.2.2
area 0
network 12.1.1.2 0.0.0.0
network 23.1.1.2 0.0.0.0
# AR3
sys
sys AR3
int g0/0/0
ip add 23.1.1.3 24
ospf network-type p2p
int g0/0/1
ipv6 enable 
ipv6 addr 2001:234::1 64
int lo 0
ip addr 3.3.3.3 32
ospf 10 router 3.3.3.3
area 0
network  23.1.1.3 0.0.0.0
network 3.3.3.3 0.0.0.0
#.........................配置隧道(下面配置为并行配置)
#.....使用ipv6 over ipv4隧道
# AR1
int Tunnel 0/0/0
tunnel-protocol ipv6-ipv4
source 1.1.1.1
destination 3.3.3.3
ipv6 enable
ipv6 addr 2001:13::1 64
q
ipv6 route-static 2001:234:: 64 Tunnel 0/0/0
# AR3
int Tunnel 0/0/0
tunnel-protocol ipv6-ipv4
source 3.3.3.3
destination 1.1.1.1
ipv6 enable
ipv6 addr 2001:13::3 64
q
ipv6 route-static 2001:123:: 64 Tunnel 0/0/0
#.....使用gre隧道
# AR1
int Tunnel 0/0/0
tunnel-protocol gre
source lo 0
destination 3.3.3.3
ipv6 enable
ipv6 addr 2001:13::1 64
q
ipv6 route-static 2001:234:: 64 Tunnel 0/0/0
# AR3
int Tunnel 0/0/0
tunnel-protocol gre
source lo 0
destination 1.1.1.1
ipv6 enable
ipv6 addr 2001:13::3 64
q
ipv6 route-static 2001:123:: 64 Tunnel 0/0/0
#.....使用自动隧道
# AR1
int Tunnel 0/0/0
tunnel-protocol ipv6-ipv4 auto-tunnel
source lo 0
destination 3.3.3.3
ipv6 enable
ipv6 addr ::1.1.1.1 96
# AR3
int Tunnel 0/0/0
tunnel-protocol ipv6-ipv4 auto-tunnel
source lo 0
destination 1.1.1.1
ipv6 enable
ipv6 addr ::3.3.3.3 96
#.............................................同理,可以自行配置4to6的隧道