IPv6概述
2011年2月3日,IANA(Internet Assigned Numbers Authority,因特网地址分配组织)宣布将其最后的468万个IPv4地址平均分配到全球5个RIR(Regional Internet Registry,区域互联网注册管理机构),此后IANA再没有可分配的IPv4地址。
IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。
相关命令
开启设备的IPv6功能
[R1]ipv6
开启接口的IPv6功能
[R1-GigabitEthernet0/0/1]ipv6 enable
IPv6过渡技术简介
当前世界上不同地区对部署IPv6的需求强烈程度不一,且当前IPv4网络仍然占主流地位,因此短时间内IPv6和IPv4将会共存。
当前过渡技术主要有三种
1 双栈技术(常用):在一台设备上同时启用IPv4协议栈和IPv6协议栈的技术。
2 隧道技术(常用):将一种协议的数据封装在另一种协议中的技术。
3 转换技术:将IPv6地址和IPv4地址进行转换的一种技术。
IPv6路由协议简介
常见的IPv4协议都有支持IPv6的版本,例如:OSPFv3、IS-IS for IPv6、BGP4+、PIM。这些协议都增加了对IPv6的支持,部分在报文上增加了字段,在协议运行原理上没有改变。
IPv6地址
IPv6地址的长度为128bit。一般用冒号分割为8段,每一段16bit,每一段内用十六进制表示。
与IPv4地址类似,IPv6也用“IPv6地址/掩码长度”的方式来表示IPv6地址。
例如:2001:0DB8:2345:CD30:1230:4567:89AB:CDEF/64
IPv6地址格式
首选格式(常用)
冒号分割为8段,每一段16bit,每一段内用十六进制表示。
用“IPv6地址/掩码长度”的方式来表示。
例如:2001:0DB8:0000:0001:0000:0000:0000:45ff/64。
压缩格式(常用)
每段前导0可以省略,但是如果该段为全0,则至少保留一个“0”字符;拖尾的0不能被省略。
一个或多个连续的段为全0时,可用“::”表示,整个IPv6地址缩写中只允许有一个“::”。
例如:2001:DB8:0:1::45ff/64。
内嵌IPv4地址的格式
地址的前96bit为IPv6地址格式,后32bit为IPv4地址格式。
IPv6部分可采用首选或压缩格式,IPv4部分采用点分十进制格式。
例如:0:0:0:0:0:0:166.168.1.2/64。
IPv6地址结构
一个IPv6地址结构分为网络前缀和接口标识。
网络前缀:nbit,相当于IPv4地址中的网络ID。
接口标识:(128-n)bit,相当于IPv4地址中的主机ID。
IPv6单播地址示例:2001:0DB8:6101:0001:5ED9:98FF:FECA:A298/64。
IPv6地址前缀
鉴于IPv4地址在规划和分配上的局限性,IETF对IPv6地址类型进行了精细划分,不同类型的IPv6地址被赋予了不同的前缀,且受地址分配机构的严格管理。
IPv6地址或前缀 |
含义 |
2001::/16 |
用于IPv6 Internet,类似于IPv4公网地址 |
2002::/16 |
用于6to4隧道 |
FE80::/10 |
链路本地地址前缀,用于本地链路范围内的通信 |
FF00::/8 |
组播地址前缀,用于IPv6组播 |
::/128 |
未指定地址,类似于IPv4中的0.0.0.0 |
::1/128 |
环回地址,类似于IPv4中的127.0.0.1 |
IPv6地址接口标识
接口ID可通过三种方式生成:手工配置、系统自动生成,或基于IEEE EUI-64规范生成。
其中,基于IEEE EUI-64规范自动生成接口ID的方式最为常用,该方式将接口的MAC地址转换为IPv6接口标识。
例如:
MAC为:08-70-5A-90-1A-01
转换为二进制:00001000 – 01110000 – 01011010 – 10010000 – 00011010 - 00000001
在中间插入FFFE:00001000 – 01110000 – 01011010 – 11111111 - 11111110 - 10010000 – 00011010 - 00000001
将第7位取反值:00001010 – 01110000 – 01011010 – 11111111 - 11111110 - 10010000 – 00011010 - 00000001
转换为十六进制即为EUI-64规范的接口ID:0A-70-5A-FF-FE-90-1A-01
使用这种方式最大的缺点就是某些恶意者可以通过二层MAC推算出三层IPv6地址。
IPv6地址类型
单播地址(Unicast Address):标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在IPv6中,一个接口拥有多个IPv6地址是非常常见的现象。
组播地址(Multicast Address):标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文。
任播地址(Anycast Address):任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。
IPv6没有定义广播地址(Broadcast Address)
IPv6常见单播地址
GUA
GUA(Global Unicast Address,全球单播地址),也被称为可聚合全球单播地址。该类地址全球唯一,用于需要有互联网访问需求的主机,相当于IPv4的公网地址。
全局路由前缀:由提供商指定给一个组织机构,一般至少为48bit。
子网ID:组织机构根据自身网络需求划分子网。
接口标识:用来标识一个设备的接口。
ULA
ULA(Unique Local Address,唯一本地地址)是IPv6私网地址,只能够在内网中使用。该地址空间在IPv6公网中不可被路由,因此不能直接访问公网。
唯一本地地址使用FC00::/7地址块,目前仅使用了FD00::/8地址段。FC00::/8预留为以后拓展用。
ULA虽然只在有限范围内有效,但也具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)。
LLA
LLA(Link-Local Address,链路本地地址)是IPv6中另一种应用范围受限制的地址类型。LLA的有效范围是本地链路,前缀为FE80::/10。
LLA用于一条单一链路层面的通信,例如IPv6地址无状态自动配置、IPv6邻居发现等。
源或目的IPv6地址为链路本地地址的数据包将不会被转发到始发的链路之外,换句话说,链路本地地址的有效范围为本地链路。
每一个IPv6接口都必须具备一个链路本地地址。华为设备支持自动生成和手工指定两种配置方式。
IPv6组播地址
IPv6组播地址标识某个组,目的为组播地址的报文会被送到该组播组内的成员。组播地址由前缀(FF::/8),标志(Flag)字段、范围(Scope)字段以及组播组ID(Group ID)4个部分组成。
Flags
用来表示永久或临时组播地址
0000表示永久组播地址
0001表示临时组播地址
Scope
表示组播组的范围
0:预留;
1:节点本地范围;单个接口有效,仅用于Loopback通讯
2:链路本地范围;例如FF02::1
5:站点本地范围;
8:组织本地范围;
E:全球范围;
F:预留。
Group ID
组播组ID
IPv6组播MAC地址
组播IPv6报文的目的IP为组播IPv6地址,同样,目的MAC为组播MAC地址。
组播MAC的前16bit为“33:33”,是专门为IPv6组播预留的MAC地址前缀。后32bit从组播IPv6地址的后32bit直接映射而来。
被请求节点组播地址
当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。
在IPv6中,ARP及广播都被取消,当设备需要请求某个IPv6地址对应的MAC地址时,设备依然需要发送请求报文,但是该报文是一个组播报文,其目的IPv6地址是目标IPv6单播地址对应的被请求节点组播地址,由于只有目标节点才会侦听这个被请求节点组播地址,所以该组播报文可以被目标节点所接收,同时不会占用其他非目标节点的网络性能。
IPv6任播地址
任播地址标识一组网络接口(通常属于不同的节点)。任播地址可以作为IPv6报文的源地址,也可以作为目的地址。
任播报文的发起方通常为请求某一服务(例如,Web服务)的主机。
任播地址与单播地址在格式上无任何差异,唯一的区别是一台设备可以给多台具有相同地址的设备发送报文。
IPv6地址和IPv4地址比较
IPv4 |
IPv6 |
|
地址空间 |
2的32次方 |
2的128次方 |
表示方式 |
点分十进制 |
冒号隔开的十六进制 |
地址类型 |
单播、组播、广播 |
单播、组播、任播 |
其它 |
A、B、C等主类地址 |
IPv6中无此概念 |
组播地址(224.0.0.0/4) |
IPv6组播地址(FF00::/8) |
|
广播地址 |
IPv6中无此概念 |
|
未指定的地址0.0.0.0/32 |
未指定的地址::/128 |
|
环回地址127.0.0.0/8 |
环回地址是::1/128 |
|
公网IP地址 |
全球单播地址 |
|
私网IP地址(10.0.0.0/8,172.16.0.0/12以及192.168.0.0/16) |
唯一本地地址(FD00::/8) |
|
APIPA地址(169.254.0.0/16) |
链路本地地址(FE80::/10) |
APIPA(Automatic Private IP Addressing,自动专用IP寻址),是一个DHCP故障转移机制。当DHCP服务器出故障时, APIPA在169.254.0.1到 169.254.255.254的私有空间内分配地址,所有设备使用默认的网络演码255.255.0.0。客户机调整它们的地址使用它们在使用ARP的局域网中是唯一的。APIPA可以为没有DHCP服务器的单网段网络提供自动配置TCP/IP协议的功能。
默认情况下,运行Windows 98/Me/2000/XP的计算机首先尝试与网络中的DHCP服务器进行联系,以便从DHCP服务器上获得自己的IP地址等信息,并对TCP/IP协议进行配置。如果无法建立与DHCP服务器的连接,客户端与本地 DHCP服务器通讯失败,无法更新它的租约,则计算机改为使用APIPA自动寻址方式,并自动配置TCP/IP协议。它将使用 APIPA分配的地址,以后每隔5分钟尝试与外界的DHCP服务器联系一次,直到它可以与 DHCP 服务器通讯为止。当这个DHCP服务器再次能为请求服务时,客户机将自动更新他们的地址。apipa存在于所有流行的各种版本的windows系统中。
IPv6地址规划
地址规划举例
地址规划要点
一般而言,ISP从地址分配机构获取的IPv6地址至少为/32前缀长度。企业用户获得的前缀长度往往为/48。
虽然IPv6地址空间巨大,但是在规划网络时,依然需要对地址进行合理规划。
确保IPv6地址的全网唯一性(除某些特殊的应用外,如anycast)。
确保IPv6地址规划的连续性、可聚合性、可扩展性。
业务地址:可在IPv6地址中规划适当bit用于承载业务信息、VLAN信息或位置信息,利于路由规划、QoS部署。
用户地址:考虑为不同业务类型的用户预留连续的地址段。通过特定bit确定用户类型、分布区域等。
建议为终端网段(用户主机、服务器等)分配/64的前缀长度。
建议为P2P链路分配/127的前缀长度。
建议为Loopback接口分配/128的前缀长度。
相关命令
配置全球单播地址
[R1-GigabitEthernet0/0/1]ipv6 address ?
STRING<1-63> DHCPv6 PD prefix
x:x::x:x/m<X:X::X:X/M> IPv6 prefix / IPv6 prefix length <1-128>
x:x::x:x<X:X::X:X> IPv6 address
auto <Group> auto command group
DHCPv6 PD prefix:指定DHCPv6前缀名称
auto:指定自动生成的地址类型(包括dhcpv6、无状态、链路本地址)
ICPMv6
IPv6定义了ICMPv6(Internet Control Message Protocol for IPv6),除了提供类似ICMP的功能外,还有诸多扩展。邻居发现协议(Neighbor Discovery Protocol,以下简称NDP)便是基于ICMPv6实现的,作为IPv6的关键协议,NDP提供了如前缀发现、重复地址检测、地址解析、重定向等功能。
ICMP回顾
Internet控制消息协议ICMP (Internet Control Message Protocol)是IP协议的辅助协议。
ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
ICMPv6概述
ICMPv6是IPv6的基础协议之一。
在IPv6报文头部中,Next Header字段值为58则对应为ICMPv6报文。
ICMPv6报文用于通告相关信息或错误。
ICMPv6报文被广泛应用于其它协议中,包括NDP、Path MTU发现机制等。
ICMPv6控制着IPv6中的地址自动配置、地址解析、地址冲突检测、路由选择、以及差错控制等关键环节。
ICMPv6报文格式
ICMPv6报文类型
ICMPv6报文分为两类:差错报文和信息报文。
差错报文
差错报文(Error Messages),也称为差错消息,Type字段最高bit为0,也就是ICMPv6 Type=[0,127]
差错消息用于报告在转发IPv6数据包过程中出现的错误,如常见的目的不可达、超时等等。
信息报文
信息报文(Information Messages) ,也称为信息消息,Type字段最高bit为1,也就是ICMPv6 Type=[128,255] 信息报文可以用来实现同一链路上节点间的通信和子网内的组播成员管理等。
ICMPv6报文类型对应表
Type | Code | 消息名 |
---|---|---|
1 | 0 | 没有路由到达目的地 |
1 | 1 | 与目的地的通信由于管理被禁止 |
1 | 2 | 超过了源地址的范围 |
1 | 3 | 地址不可达 |
1 | 4 | 端口不可达 |
1 | 5 | 源地址的入口/出口策略失败 |
1 | 6 | 拒绝路由到达目的地 |
2 | 0 | 包太大 |
3 | 0 | 传输过程中“hop-limit”超时 |
3 | 1 | 分片重组超时 |
4 | 0 | 参数错误 |
4 | 1 | 错误的首部字段 |
4 | 2 | 不可识别的Next Header类型 |
4 | 3 | 不可识别的IPv6选项 |
100 | x | 私有实验用 |
101 | x | 私有实验用 |
127 | x | ICMPv6差错报文扩展保留 |
128 | 0 | 回显请求 |
129 | 0 | 回显应答 |
130 | 查询消息 | |
131 | 报告消息 | |
132 | 离开消息 | |
133 | x | 路由请求 |
134 | x | 路由通告 |
135 | x | 邻居请求 |
136 | x | 邻居通告 |
137 | x | 重定向 |
143 | x | MLDv2 (Multicast Listener Report Message v2)报告消息 |
200 | x | 私有实验用 |
201 | x | 私有实验用 |
255 | x | ICMPv6消息报文扩展保留 |
抓包观察
分析:type 128 code 0,表示这是一个ping请求报文。
NDP概述
邻居发现协议(Neighbor Discovery Protocol,简称NDP)。
NDP主要功能
路由器发现:发现链路上的路由器,获得路由器通告的信息。
无状态自动配置:通过路由器通告的地址前缀,终端自动生成IPv6地址。
重复地址检测:获得地址后,进行地址重复检测,确保地址不存在冲突。
地址解析:请求目的网络地址对应的数据链路层地址,类似IPv4的ARP。
邻居状态跟踪:通过NDP发现链路上的邻居并跟踪邻居状态。
前缀重编址:路由器对所通告的地址前缀进行灵活设置,实现网络重编址。
重定向:告知其他设备,到达目标网络的更优下一跳。
NDP使用以下几种ICMPv6报文
RS(Router Solicitation):路由器请求报文
RA(Router Advertisement):路由器通告报文
NS(Neighbor Solicitation):邻居请求报文
NA(Neighbor Advertisement):邻居通告报文
功能 |
RS 133 |
RA 134 |
NS 135 |
NA 136 |
重定向 137 |
地址解析 |
● |
● |
|||
路由器发现 |
● |
● |
|||
前缀重编址 |
● |
● |
|||
重复地址检测 |
● |
● |
|||
重定向 |
● |
路由器发现
路由器发现是指主机发现本地链路上路由器和确定其配置信息的过程。
路由器发现可以同时实现以下三个功能:
路由器发现 (Router Discovery):主机定位邻居路由器以及选择哪一个路由器作为缺省网关的过程。
前缀发现 (Prefix Discovery):主机发现本地链路上的一组IPv6前缀的过程,用于主机的地址自动配置。
参数发现 (Parameter Discovery):主机发现相关操作参数的过程,如输出报文的缺省跳数限制、地址配置方式等信息。
使用以下两种报文:
RS 路由器请求
RA 路由器通告
协议交互主要有两种情况:
主机发送RS触发路由器回应RA
路由器周期发送RA
路由器发现流程
主机请求触发
当主机启动时,主机会向本地链路范围内所有的路由器发送RS报文,触发路由器响应RA报文。主机发现本地链路上的路由器后,自动配置缺省路由器,建立缺省路由表、前缀列表和设置其它的配置参数。
路由器周期性发送
路由器周期性的发送RA报文,RA发送间隔是一个有范围的随机值,缺省的最大时间间隔是600秒,最小时间间隔是200秒。
对于定期发送的RA报文,其地址有如下要求:
Source Address:必须是发送接口的链路本地地址。
Destination Address :FF02::1。
地址解析
IPv6地址解析通过ICMPv6(NS和NA报文)来实现。
用于
地址解析在三层完成,不同的二层介质可以采用相同的地址解析协议。
可以使用三层的安全机制避免地址解析攻击。
使用组播方式发送请求报文,减少了二层网络的性能压力。
第一个报文目标为目标设备的被请求节点组播地址
邻居状态跟踪
IPv6节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。5种邻居状态分别是:未完成(Incomplete)、可达(Reachable)、陈旧(Stale)、延迟(Delay)、探查(Probe)。
状态 |
描述 |
Incomplete |
邻居不可达。正在进行地址解析,邻居的链路层地址未探测到,如果解析成功,则进入Reachable状态。 |
Reachable |
邻居可达。表示在规定时间(邻居可达时间,缺省情况下是30秒)内邻居可达。如果超过规定时间,该表项没有被使用,则表项进入Stale状态。 |
Stale |
邻居是否可达未知。表明该表项在规定时间(邻居可达时间,缺省情况下是30秒)内没有被使用。此时除非有发送到邻居的报文,否则不对邻居是否可达进行探测。 |
Delay |
邻居是否可达未知。已向邻居发送报文,如果在指定时间内没有收到响应,则进入Probe状态。 |
Probe |
邻居是否可达未知。已向邻居发送NS报文,探测邻居是否可达。在规定时间内收到NA报文回复,则进入Reachable状态;否则进入Incomplete状态。 |
邻居状态迁移
R1先发送NS报文,并生成缓存条目,此时,邻居状态为Incomplete。
若收到R2回复的NA报文,则邻居状态由Incomplete变为Reachable,否则固定时间后邻居状态由Incomplete变为Empty。
经过邻居可达时间(默认30s),邻居状态由Reachable变为Stale,即未知是否可达。
如果在Reachable状态,R1收到R2的非请求NA报文,且其中携带的R2的链路层地址和表项中不同,则邻居状态马上变为Stale。
在Stale状态若R1要向R2发送数据,则邻居状态由Stale变为Delay,并发送NS请求。
在经过一段固定时间后,邻居状态由Delay变为Probe,其间若有NA应答,则邻居状态由Delay变为Reachable。
在Probe状态,R1每隔一定时间间隔(默认1s)发送单播NS,发送固定次数后,有应答则邻居状态变为Reachable,否则邻居状态变为Empty。
相关命令
查看邻居状态表
<R1>display ipv6 neighbors
重复地址检测
重复地址检测(Duplicate Address Detect,DAD)是指接口在使用某个IPv6地址之前,需要先探测是否有其它的节点使用了该地址,从而确保网络中没有两个相同的单播地址。
接口在启用任何一个单播IPv6地址前都需要先进行DAD,包括Link-Local地址。
重复地址检测是节点确定即将使用的地址是否被另一节点使用的过程。在节点自动配置某个接口的IPv6单播地址之前,必须在本地链路范围内验证要使用的地址是唯一的,并且未被其他节点使用过。只要NS报文发送到本地链路上(缺省发送一次NS报文),如果在规定时间内没有NA报文进行应答,则认为这个临时单播地址在本地链路上是唯一的,可以分配给接口;反之,这个临时地址是重复的,不能配置到接口。
一个地址在通过重复地址检测之前称为“tentative地址”,即“试验地址”。此时该接口不能使用这个试验地址进行单播通讯。
特殊情况:有两台主机同时分配到同一个IP地址。假设PC1和PC2都想使用2000::1这个地址,那么进一步假设PC1先发送NS,PC2收到以后将不会发送NS了(当然也不会发送NA),直接停止使用2000::1这个地址,等待其他方式生成新的地址。如果同时收到NS报文,则都会放弃使用2000::1地址。
重定向
重定向是指网关设备发现报文从其它网关设备转发更优,它就会发送重定向报文告知报文的发送者,让报文发送者选择另一个网关设备。
IPv6地址配置
IPv6地址配置方式
IPv6地址配置的方式可以分为静态配置和动态配置。其中,动态地址配置又可以分为无状态地址自动配置(Stateless Address Autoconfiguration, SLAAC)和有状态地址自动配置(Stateful Address Autoconfiguration)。
无状态地址自动配置
不需要IPv6地址分配服务器保存和管理每个节点的状态信息的一种IPv6地址自动配置方式,称之为IPv6无状态地址自动配置。无状态地址自动配置方式基于NDP来实现。
有状态地址自动配置
IPv6地址分配服务器必须保存每个节点的状态信息,并管理这些保存的信息,这种方式称之为IPv6有状态地址自动配置。有状态地址自动配置基于DHCPv6(Dynamic Host Configuration Protocol for IPv6)来实现。
无状态自动配置过程
1 PC1根据本地的接口ID自动生成链路本地地址。
2 PC1对该链路本地地址进行DAD检测,如果该地址无冲突则可启用,此时PC1具备IPv6连接能力。
3 PC1发送RS报文,尝试在链路上发现IPv6路由器。
4 R1发送RA报文(携带可用于无状态地址自动配置的IPv6地址前缀。路由器在没有收到RS报文时也能够主动发出RA报文)。
5 PC1解析路由器发送的RA报文,获得IPv6地址前缀,使用该前缀加上本地的接口ID生成IPv6单播地址。
6 PC1对生成的IPv6单播地址进行DAD检测,如果没有检测到冲突,则启用该地址。
相关命令
启用无状态自动配置
[R1-GigabitEthernet0/0/0]ipv6 address auto global
启用RA报文(华为设备默认关闭)
[R1-GigabitEthernet0/0/0]undo ipv6 nd ra halt
配置举例---无状态自动配置
路由器R1手动配置地址,路由器R2采用无状态自动配置。
路由器R1配置
#
sysname R1
#
ipv6
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001:101:101::1/64
undo ipv6 nd ra halt
#
路由器R2配置
#
sysname R2
#
ipv6
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto global
#
抓包观察RA报文
1 M-bit:管理地址配置标识,M-bit为0,即采用无状态地址自动配置。M-bit设置为1时,收到该RA的终端将使用DHCPv6来获取地址及其他信息。
2 O-bit:其它有状态配置标识,O-bit为0,此时收到该RA的终端进行无状态自动配置。O-bit为1时,收到该RA的终端将使用DHCPv6来获取除地址之外的其他参数。
3 前缀长度:64
4 A-bit,用于指示终端设备是否能使用该前缀进行无状态地址自动配置。A-bit被为0时,终端不能使用该前缀进行无状态地址自动配置。A-bit被为1时,终端可以使用该前缀进行无状态自动配置。
5 前缀地址:2001:101:101::
6、7 当终端获取到前缀并生成IPv6单播地址后,首先进入Tentative状态,在通过DAD后,该地址将进入Preferred状态,并在Preferred lifetime内保持该状态。
在Preferred状态,终端可以正常收发报文。Preferred lifetime超时后,地址进入Deprecated状态,并在Valid lifetime内保持该状态。
在Deprecated状态,该地址仍然有效,现有的连接可以继续使用该地址,但是无法使用该地址建立新的连接。
当Valid lifetime超时后,地址进入Invalid状态,表示该地址无法继续使用。
IPv6报文结构
IPv6报文构成
基本报头
提供报文转发的基本信息,路由器通过解析基本报头就能完成绝大多数的报文转发任务。
每一个IPv6数据报文都必须包含报头,其长度固定为40字节。
基本报头提供报文转发的基本信息,会被转发路径上的所有路由器解析。
扩展报头
IPv6扩展报头是可能跟在基本IPv6报头后面的可选报头。IPv6数据包中可以包含一个或多个扩展报头,当然也可以没有扩展头,这些扩展报头可以具有不同的长度。IPv6报头和扩展报头代替了IPv4报头及其选项。新的扩展报头格式增强了IPv6的功能,使其具有极大的扩展性。与IPv4报头中的选项不同,IPv6扩展报头没有最大长度的限制,因此可以容纳IPv6通信所需要的所有扩展数据。扩展报头提供报文转发的扩展信息,并不会被路径上所有的路由器解析,一般只会被目的路由器解析处理。
上层协议数据单元
上层协议数据单元一般由上层协议报头和它的有效载荷构成,该部分与IPv4的上层协议数据单元相似。
有效载荷可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。
IPv6基本报头
IPv6基本报头也称之为固定报头。固定报头包含8个字段,总长度为40Byte。这8个字段分别为:版本(Version)、流类别(Traffic Class)、流标签(Flow Label)、有效载荷长度(Payload Length)、下一个报头(Next Header)、跳数限制(Hop Limit)、源IPv6地址、目的IPv6地址。
版本(Version)
该字段规定了IP协议的版本,其值为6。长度为4bit。
流类别(Traffic Class)
该字段功能和IPv4中的服务类型功能类似,表示IPv6数据报文的类或优先级。长度为8bit。
流标签(Flow Label)
与IPv4相比,该字段是新增的。它用来标识这个数据报属于源节点和目标节点之间的一个特定数据报序列,它需要由中间IPv6路由器进行特殊处理。该字段长度为20bit。一般来说一个流可以通过源/目的IPv6地址和流标签来确定。
有效载荷长度(Payload Length)
该字段表示IPv6数据报有效载荷的长度。有效载荷是指紧跟IPv6报头的数据报的其它部分(即扩展报头和上层协议数据单元)。该字段长度为16bit,能表示最大长度为65535Byte的有效载荷。如果有效载荷的长度超过这个值,该字段会置0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示。
IPv6扩展报头
扩展报头规约
扩展报头必须按上图排列的顺序出现。
除目的选项报头外,每种扩展报头只能出现一次。
目的选项头最多出现2次,1次在路由报头之前,1次在上层协议数据报文之前,如果没有路由报头,则只能出现一次。
RFC 2460中定义了以下6个IPv6扩展头
1 逐跳选项报头:该扩展头被每一跳处理,可包含多种选项,如路由器告警选项。
2 目的选项报头:目的地处理, 可包含多种选项,如Mobile IPv6的家乡地址选项。
3 路由报头:指定源路由,类似IPv4源路由选项,IPv6源节点用来指定信息报到达目的地的路径上所必须经过的中间节点。IPv6基本报头的目的地址不是分组的最终目的地址,而是路由扩展头中所列的第一个地址。
4 分段报头:IP报文分片信息,只由目的地处理。
5 认证报头:IPSec用扩展头, 只由目的地处理。
6 封装安全净载报头:IPSec用扩展头,只由目的地处理。
逐跳选项扩展头和目的地选项扩展头内部提供选项功能,支持扩展性(如对移动性支持)。选项采用TLV方式。
如果数据报中没有扩展报头,也就是说数据包只包含基本报头和上层协议单元,基本报头的下一个报头(Next Header)字段值指明上层协议类型。在上例中,基本报头的下一个报头字段值为6,说明上层协议为TCP;如果报文有一个扩展报头,则基本报头的下一个报头(Next Header)字段值为扩展报头类型(在上例中,指明紧跟在基本报头后面的扩展报头为43,也就是路由报头),扩展报头的下一个报头字段指明上层协议类型;以此类推,如果数据报中报括多个扩展报头,则每一个扩展报头的下一个报头指明紧跟着自己的扩展报头的类型,最后一个扩展报头的下一个报头字段指明上层协议。
抓包观察
1 版本:6代表IPv6
2 流量类别:0x00
3 流标签:0x00000
4 有效载荷长度:64字节
5 下一个报头:ICMPv6
6 最大跳数:64
7 源地址:FE80::2E0:FCFF:FE53:190
8 目的地址:FE80::2E0:FCFF:FEB1:1DF4
9 源MAC:00:e0:fc:53:01:90
10 目的MAC:00:e0:fc:b1:1d:f4
11 消息类型:128表示icmp请求
12 消息代码:icmp请求固定为0
13 校验码用于校验数据完整性
14 校验结果:正常
15 ID(标识匹配的请求/回显报文):0xd4ab
16 序列号(标识匹配的请求/回显报文):1024
配置举例---6to4隧道技术
1 R1、R2、R3三台路由器运行OSPF。
2 R1、R3两台路由器运行IPv4、IPv6双栈。R2只运行IPv4协议。
3 PC1与PC2通过在R1、R3配置的6to4隧道技术通信。
R1配置
#
ipv6
#
interface GigabitEthernet0/0/0
ip address 1.1.1.1 255.255.255.0
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 2002:101:101::1/64
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address auto link-local
tunnel-protocol ipv6-ipv4 6to4 //隧道技术6to4
source GigabitEthernet0/0/0
#
ospf 1 router-id 1.1.1.1
area 0.0.0.0
#
ipv6 route-static 2002:: 16 Tunnel0/0/0 //需要配置一条静态路由
#
R2配置
#
interface GigabitEthernet0/0/0
ip address 1.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.1.2 255.255.255.0
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 0.0.0.0 255.255.255.255
#
R3配置
#
ipv6
#
interface GigabitEthernet0/0/0
ip address 10.1.1.3 255.255.255.0
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 2002:A01:103::1/64
#
interface Tunnel0/0/0
ipv6 enable
ipv6 address auto link-local
tunnel-protocol ipv6-ipv4 6to4
source GigabitEthernet0/0/0
#
ospf 1 router-id 3.3.3.3
area 0.0.0.0
#
ipv6 route-static 2002:: 16 Tunnel0/0/0
#
注意:R1、R2的g0/0/0接口的IPv4地址与g0/0/1接口的IPv6地址中的第17位到32位必须一致,也就是经过转换才能正常使用6to4隧道技术通信,比如R1的g0/0/0接口地址为1.1.1.1,转换为16进制后为101:101,对应的IPv6前缀为2002:101:101::,R3的g0/0/0接口地址为10.1.1.3,转换为16进制后为A01:103,对应的IPv6前缀为2002:A01:103::。
DHCPv6
DHCPv6针对IPv6编址方案设计,支持对客户端分配IPv6前缀、IPv6地址和其他网络配置参数,并记录这些信息,便于网络管理。
构成
DHCPv6基本协议架构与DHCP类似,主要包括以下三种角色:
DHCPv6 Client:DHCPv6客户端,通过与DHCPv6服务器进行报文交互,获取IPv6地址/前缀和其他网络配置参数,完成自身的网络配置。
DHCPv6 Server:DHCPv6服务器,负责处理来自客户端或中继的地址分配、地址续租、地址释放等请求,为客户端分配IPv6地址/前缀和其他网络配置参数。
DHCPv6 Relay:DHCPv6中继,负责转发来自客户端或服务器的DHCPv6报文,协助DHCPv6客户端和DHCPv6服务器完成地址配置功能。
常用概念
有效时间 Valid Lifetime,地址/前缀的生命周期。用于指定地址/前缀的过期时间,过期后所有使用该地址/前缀的用户下线。此时间必须配置为不小于3小时,且不得小于优先级时间。
优选时间 Preferred Lifetime,用于计算续租时间和重绑定时间。此时间必须配置为不小于2小时。
T1 IPv6地址的续租(Renew)时间,默认是Preferred Lifetime的0.5倍。
T2 IPv6地址的重绑定(Rebind)时间,默认是Preferred Lifetime的0.8倍。
IA Identity association,即身份联盟,是使得服务器和客户端能够识别、分组和管理一系列相关IPv6地址的结构,又分为IA_NA(非临时地址身份联盟)和IA_PD(代理前缀身份联盟)。
DUID DHCP Unique Identifier,即DHCP设备唯一标识符。用来唯一标志一台设备,每个客户端、服务器、中继都有自己的DUID。
报文类型 Solicit、Advertise、Request、Reply、Information-Request、Renew、Rebind、Release、Confirm、Decline、Reconfigure、Relay-Forward、Relay-Reply等。
地址/前缀租约更新
DHCPv6服务器分配的IPv6地址/前缀具有有效时间。地址/前缀的租借时间超过有效时间后,DHCPv6客户端不能再使用该地址/前缀。因此,在有效时间超时之前,如果DHCPv6客户端希望继续使用该地址/前缀,则需要更新地址/前缀的租约。
地址/前缀更新流程
1 DHCPv6客户端在T1时刻(默认为Preferred Lifetime的1/2)发送Renew报文进行地址/前缀租约更新请求。
2 如果DHCPv6客户端可以继续使用该地址/前缀,则DHCPv6服务器回应续约成功的Reply报文,通知DHCPv6客户端已经成功更新地址/前缀租约。否则,DHCPv6服务器回应续约失败的Reply报文,通知DHCPv6客户端不能获得新的租约。
3 如果DHCPv6服务器未响应T1时刻DHCPv6客户端发出的Renew请求,则客户端会在T2(默认为Preferred Lifetime的0.8倍)向所有DHCPv6服务器组播发送Rebind请求更新租约。
4 如果T2时刻也未收到回应,则客户端重新发送Solicit报文。
DHCPv6工作原理
DHCPv6有状态自动配置 - 四步交互
四步交互是指DHCPv6客户端与服务器交互四次来完成前缀/地址等参数获取的过程。
1 DHCPv6客户端发送Solicit消息,请求DHCPv6服务器为其分配IPv6地址/前缀和网络配置参数。
2 DHCPv6服务器回复Advertise消息,通知客户端可以为其分配的地址/前缀和网络配置参数。
3 如果DHCPv6客户端接收到多个服务器回复的Advertise消息,则根据消息接收的先后顺序、服务器优先级等,选择其中一台服务器,并向该服务器发送Request消息,请求服务器确认为其分配地址/前缀和网络配置参数。
4 DHCPv6服务器回复Reply消息,确认将地址/前缀和网络配置参数分配给客户端使用。
DHCPv6有状态自动配置 - 两步交互
DHCPv6客户端可以在发送的Solicit消息中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址/前缀和网络配置参数。
1 DHCPv6客户端发送Solicit报文,携带Rapid Commit选项。
2 DHCPv6服务器接收到Solicit报文后,将会判断,如果DHCPv6服务器支持快速分配,则直接返回Reply报文,为客户端分配IPv6地址/前缀和其他网络配置参数。如果DHCPv6服务器不支持快速分配,则将采用四步交互方式。
注意:两步交换可以提高DHCPv6分配过程的效率,但适用在网络中只存在一台DHCPv6服务器的情况下。在有多个DHCPv6服务器的网络中,多个DHCPv6服务器都可以为DHCPv6客户端分配IPv6地址/前缀和其他配置参数,但是客户端实际只能使用其中一个服务器为其分配的IPv6地址/前缀和配置参数。
DHCPv6无状态自动配置
DHCPv6服务器为已经具有IPv6地址/前缀的客户端分配除地址/前缀以外的其他网络配置参数,该过程称为DHCPv6无状态自动配置。
1 DHCPv6客户端以组播的方式向DHCPv6服务器发送Information-request报文,该报文中携带Option Request选项,指定客户端需要从服务器获取的配置参数。
2 服务器收到该报文后,为客户端分配网络配置参数,并单播发送Reply报文将网络配置参数返回给客户端。客户端检查Reply报文中提供的信息,如果与Information-request报文中请求的配置参数相符,则按照Reply报文中提供的参数进行网络配置;否则,忽略该参数。
注意:在主机生成链路本地地址并检测无地址冲突后,会首先发起路由器发现过程,即主机发送RS报文,路由器回应RA报文。如果RA报文中M-bit为0,O-bit为1,则表示主机将通过DHCPv6无状态自动配置来获取除地址/前缀外的其他配置参数,如DNS、SIP、SNTP等服务器配置信息等。
DHCPv6 PD自动配置
在一个层次化的网络结构中,不同层次的IPv6地址配置一般是手工指定的。手工配置IPv6地址扩展性不佳,不利于IPv6地址的统一规划管理。DHCPv6 PD可以解决这个问题。
1 DHCPv6客户端发送Solicit报文,请求DHCPv6服务器为其分配IA_NA地址和IA_PD前缀。
2 DHCPv6服务器回复Advertise报文,通知客户端可以为其分配的IPv6地址和前缀。
3 如果客户端接收到多个服务器回复的Advertise报文,则根据Advertise报文中的服务器优先级等参数,选择优先级最高的一台服务器(若服务器优先级一样,则选择带有该客户端需要的配置参数的Advertise报文) ,并向其发送Request报文,请求为其分配地址/前缀。
4 DHCPv6服务器回复Reply报文,确认将IPv6地址/前缀分配给DHCPv6客户端。
5 DHCPv6客户端在收到PD前缀后,与终端进行RS/RA报文交互,在RA报文中将携带获取到的PD前缀下发至终端。
注意:DHCPv6 PD一般用于网络中存在路由器(如本例中的DHCPv6客户端)需要继续为下连的IPv6主机分配前缀的场景,实现主机的地址自动配置,从而完成整个IPv6网络的层次化布局。 第1步中,DHCPv6客户端请求DHCPv6服务器为其分配IA_NA地址和IA_PD前缀,IA_NA可以理解为服务器为客户端WAN口分配的地址,IA_PD可以理解为服务器为客户端的LAN侧分配的前缀。
DHCPv6中继工作过程
当服务器和客户端不在一个网段时,需要使用到DHCPv6中继来完成IPv6地址/前缀和其他网络配置参数的获取。
1 DHCPv6客户端向所有DHCPv6服务器和DHCPv6中继的组播地址FF02::1:2发送请求报文。
2 DHCPv6中继收到客户端的报文后,将其封装在Relay-Forward报文的中继消息选项中,并将Relay-Forward报文发送给DHCPv6服务器或下一跳中继。
3 DHCPv6服务器从Relay-Forward报文中解析出DHCPv6客户端的请求,为DHCPv6客户端选取IPv6地址和其他配置参数,并将Relay-Reply报文发送给DHCPv6中继。
4 DHCPv6中继从Relay-Reply报文中解析出DHCPv6服务器的应答,转发给DHCPv6客户端。
DHCPv6地址确认过程
当客户端有断电、掉线、漫游等情况发生时,客户端会发送Confirm报文确认自己的IPv6地址是否可用。如果客户端确认的地址是合法的,则服务器回应;如果没有回应,则客户端需要重新启动地址申请流程。
DHCPv6地址冲突检测过程
客户端完成地址申请后,会在开始使用该地址前发起DAD探测。如果DAD检测到地址存在冲突,则客户端发送Decline消息通知服务器,并不再使用该地址。
DHCPv6地址冲突检测过程
客户端完成地址申请后,会在开始使用该地址前发起DAD探测。如果DAD检测到地址存在冲突,则客户端发送Decline消息通知服务器,并不再使用该地址。
DHCPv6地址释放过程
当客户端不需要再使用某地址时,将发送Release消息至服务器,发起释放地址的交互流程。
DHCPv6报文总结
报文类型 |
报文作用 |
Solicit |
DHCPv6客户端发送该消息,请求DHCPv6服务器为其分配IPv6地址/前缀和网络配置参数 |
Advertise |
DHCPv6服务器发送Advertise消息,通知客户端可以为其分配的地址/前缀和网络配置参数 |
Request |
如果DHCPv6客户端接收到多个服务器回复的Advertise消息,则根据消息接收的先后顺序、服务器优先级等,选择其中一台服务器,并向该服务器发送Request消息,请求服务器确认为其分配地址/前缀和网络配置参数 |
Reply |
DHCPv6服务器发送Reply消息,确认将地址/前缀和网络配置参数分配给客户端使用 |
Information-Request |
客户端向DHCPv6服务器发送Information-request报文,该报文中携带Option Request选项,指定客户端需要从服务器获取的配置参数 |
Renew |
地址/前缀租借时间到达时间T1时,DHCPv6客户端会向为它分配地址/前缀的DHCPv6服务器单播发送Renew报文,以进行地址/前缀租约的更新 |
Rebind |
如果在T1时发送Renew请求更新租约,但是没有收到DHCPv6服务器的回应报文,则DHCPv6客户端会在T2时,向所有DHCPv6服务器组播发送Rebind报文请求更新租约 |
Confirm |
当有断电、掉线、漫游等情况发生时,客户端会发送Confirm报文确认自己的IP地址是否可用 |
Decline |
当客户端发现地址冲突时,发送Decline通知服务器 |
地址自动配置比较
地址配置 |
基于DHCPv6 |
基于NDP |
地址管理 |
有状态。服务器端存储用户地址或前缀的分配和释放信息 |
无状态。不保存用户地址分配信息 |
部署价值 |
支持128bit地址和不同长度的前缀分配,扩展性强 |
只支持64bit前缀配置,扩展性差 |
实现难度 |
配置复杂 |
配置简单 |
安全性 |
应用层协议,安全性强 |
安全性较差 |
分析:DHCPv6和NDP两种自动配置方式,DHCPv6在地址管理、部署价值、安全性上都优于DNP,配置难度大一点也是值得的。
配置举例:DHCPv6有状态自动配置
DHCPv6服务器配置
#
sysname R1
#
ipv6
#
dhcp enable
#
dhcpv6 pool DHCPv61 //配置DHPCv6地址池
address prefix 2001:101:101::/64 //配置前缀、掩码长度
excluded-address 2001:101:101::1 //配置排除分配地址
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001:101:101::1/64
ipv6 address auto link-local
dhcpv6 server DHCPv61 //配置为DHCPv6服务器
#
DHCPv6客户端配置
#
sysname R2
#
ipv6
#
dhcp enable
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto link-local
ipv6 address auto dhcp //有状态自动配置
#
验证结果
[R2]display dhcpv6 client
GigabitEthernet0/0/0 is in stateful DHCPv6 client mode.
State is BOUND.
Preferred server DUID : 0003000100E0FC687B62
Reachable via address : FE80::2E0:FCFF:FE68:7B62
IA NA IA ID 0x00000031 T1 43200 T2 69120
Obtained : 2022-10-30 20:28:05
Renews : 2022-10-31 08:28:05
Rebinds : 2022-10-31 15:40:05
Address : 2001:101:101::2 //可看出分配到的地址
Lifetime valid 172800 seconds, preferred 86400 seconds
Expires at 2022-11-01 20:28:05(172577 seconds left)
IPv6路由协议
IPv6静态路由与IPv4静态路由在配置方式上颇为相似。为了实现对IPv6网络的支持,IETF制定了OSPFv3,同时对IS-IS、BGP做了扩展。
IPv6静态路由
IPv6静态路由与IPv4静态路由类似,也需要管理员手工配置,适合于一些结构比较简单的IPv6网络。
在创建IPv6静态路由时,可以同时指定出接口和下一跳,或者只指定出接口或只指定下一跳。
对于点到点接口:指定出接口。
对于广播类型接口:指定下一跳。
IPv6静态路由负载分担和备份:在创建相同目的地址的多条IPv6静态路由时,如果指定相同优先级,则可实现负载分担,如果指定不同优先级,则可实现路由备份。
配置举例---IPv6静态路由
需求:使两边环回口互通
路由器R1配置
#
ipv6
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001:111:2222:10::1/64
#
interface LoopBack0
ipv6 enable
ipv6 address 2001:111:2222:1::1/128
#
ipv6 route-static 2001:111:2222:1::2 128 2001:111:2222:10::2
#
路由器R2配置
#
ipv6
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001:111:2222:10::2/64
#
interface LoopBack0
ipv6 enable
ipv6 address 2001:111:2222:1::2/128
#
ipv6 route-static 2001:111:2222:1::1 128 2001:111:2222:10::1
#
OSPFv3
OSPFv3的主要目的是开发一种独立于任何具体网络层的路由协议。为实现这一目的,OSPFv3的内部路由器信息被重新进行了设计。
OSPFv3与OSPFv2的不同点
OSPFv3基于链路运行以及拓扑计算,而不再是网段。
OSPFv3支持一个链路上多个实例。
OSPFv3报文和LSA中去掉了IP地址的意义,且重构了报文格式和LSA格式。
OSPFv3报文和Router LSA/Network LSA中不包含IP地址。
OSPFv3的LSA中定义了LSA的泛洪范围。
OSPFv3中创建了新的LSA承载IPv6地址和前缀。
OSPFv3邻居不再由IP地址标识,只由Router ID标识。
唯一邻居标识:Router ID
Router ID是一个OSPFv3设备在自治系统中的唯一标识。如果用户没有指定Router ID,则OSPFv3进程无法运行。
设置Router ID时,必须保证自治系统中任意两台设备的Router ID都不相同。
Router ID长度32bit,本地标识符,与IPv6地址无关,用点分十进制表示法来表示。
OSPFv3基于链路运行
OSPFv3是基于链路运行的,设备只要在同一链路,就可以建立邻居关系。
OSPFv3运行时,仅需邻居双方处于相同直连链路即可。
IPv6中重点强调了链路的概念,在IPv6中,一个链路上可以分配多个IP子网,也就是IPv6前缀。和IPv4不同的是,同一个链路上的两个节点即使不具有相同的IPv6前缀,也可以直接通过这个链路通信。这一点极大地改变了OSPF的行为。
链路支持多实例
一个OSPFv3物理接口可以和多个实例绑定,并用不同的实例标识(Instance ID)区分,即OSPFv3的单个链路支持运行多个OSPFv3实例。
这些运行在同一条物理链路上的多个OSPFv3实例,分别与链路对端设备建立邻居及发送报文,且互不干扰,这样可以充分共享同一链路资源。
OSPFv3对链路本地地址的使用
OSPFv3使用链路本地(FE80::/10)地址作为发送报文的源地址和路由的下一跳地址。
使用链路本地地址来维持邻居关系,同步LSA数据库。
相关命令
基本配置命令
全局开启OSPFv3功能
[R1]ospfv3 1
配置进程号(必须手动配置后OSPFv3才能正常运行)
[R1-ospfv3-1]router-id 1.1.1.1
进入区域视图
[R1-ospfv3-1]area 0
在接口下开启OSPFv3功能(可配置实例号)
[R1-GigabitEthernet0/0/0]ospfv3 1 area 0 instance 0
配置接口的OSPFv3网络类型
[R1-GigabitEthernet0/0/0]ospfv3 network-type p2p
查看OSPFv3基本信息命令
查看OSPFv3的接口信息
[R1]display ospfv3 interface
查看OSPFv3的邻居信息
[R1]display ospfv3 peer
查看OSPFv3的LSDB信息
[R1]display ospfv3 lsdb
查看OSPFv3的路由表信息
[R1]display ospfv3 routing
配置举例---同一链路运行2个实例
注意:如果在不同链路上配置了同样的网络前缀,虽然可以建立邻接关系,但是同一个网络前缀的地址通信时,会造成网络震荡和路由不通等问题。
虽然同一链路配任意地址都可以通信,但是考虑到与不同链路的路由问题以及地址规划问题,建议同一链路配同样的网络前缀。
如图所示:上下运行不同的实例。R3-R1-R2-R5:实例10 ; R4-R1-R2-R5:实例20。因此R1-R2这条链路上运行了2个实例。
R1主要配置(R2配置类似)
#
sysname R1
#
ipv6
#
ospfv3 1
router-id 1.1.1.1
#
ospfv3 2
router-id 1.1.1.1
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001:111:222:2::1/64
ospfv3 1 area 0.0.0.0 instance 10
ospfv3 2 area 0.0.0.0 instance 20
#
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 2001:111:222:3::1/64
ospfv3 1 area 0.0.0.0 instance 10
#
interface GigabitEthernet0/0/2
ipv6 enable
ipv6 address 2001:111:222:4::1/64
ospfv3 2 area 0.0.0.0 instance 20
#
R3主要配置(R5配置类似)
#
sysname R3
#
ipv6
#
ospfv3 1
router-id 3.3.3.3
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001:111:222:3::3/64
ospfv3 1 area 0.0.0.0 instance 10
#
R4主要配置(R6配置类似)
#
sysname R4
#
ipv6
#
ospfv3 2
router-id 4.4.4.4
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001:111:222:4::4/64
ospfv3 2 area 0.0.0.0 instance 20
#
联通性测试
R3 ping R5、R6
<R3>ping ipv6 2001:111:222:5::5
PING 2001:111:222:5::5 : 56 data bytes, press CTRL_C to break
Reply from 2001:111:222:5::5
bytes=56 Sequence=1 hop limit=62 time = 60 ms
Reply from 2001:111:222:5::5
bytes=56 Sequence=2 hop limit=62 time = 40 ms
Reply from 2001:111:222:5::5
bytes=56 Sequence=3 hop limit=62 time = 40 ms
Reply from 2001:111:222:5::5
bytes=56 Sequence=4 hop limit=62 time = 30 ms
Reply from 2001:111:222:5::5
bytes=56 Sequence=5 hop limit=62 time = 20 ms
--- 2001:111:222:5::5 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/38/60 ms
<R3>ping ipv6 2001:111:222:6::6
PING 2001:111:222:6::6 : 56 data bytes, press CTRL_C to break
Request time out
Request time out
Request time out
Request time out
Request time out
--- 2001:111:222:6::6 ping statistics ---
5 packet(s) transmitted
0 packet(s) received
100.00% packet loss
round-trip min/avg/max = 0/0/0 ms
<R3>
R4 ping R5、R6
<R4>ping ipv6 2001:111:222:5::5
PING 2001:111:222:5::5 : 56 data bytes, press CTRL_C to break
Request time out
Request time out
Request time out
Request time out
Request time out
--- 2001:111:222:5::5 ping statistics ---
5 packet(s) transmitted
0 packet(s) received
100.00% packet loss
round-trip min/avg/max = 0/0/0 ms
<R4>ping ipv6 2001:111:222:6::6
PING 2001:111:222:6::6 : 56 data bytes, press CTRL_C to break
Reply from 2001:111:222:6::6
bytes=56 Sequence=1 hop limit=62 time = 30 ms
Reply from 2001:111:222:6::6
bytes=56 Sequence=2 hop limit=62 time = 40 ms
Reply from 2001:111:222:6::6
bytes=56 Sequence=3 hop limit=62 time = 30 ms
Reply from 2001:111:222:6::6
bytes=56 Sequence=4 hop limit=62 time = 30 ms
Reply from 2001:111:222:6::6
bytes=56 Sequence=5 hop limit=62 time = 30 ms
--- 2001:111:222:6::6 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 30/32/40 ms
<R4>
结果分析:相同实例的设备之间可以互相通信,不同实例的设备之间无法通信。
OSPFv3报文
OSPFv3与OSPFv2有相同类型的报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
OSPFv3与OSPFv2使用相同的协议号89。
OSPFv3与OSPFv2类似,使用组播地址作为OSPF报文目的地址。
OSPFv2使用IPv4组播地址: OSPF IGP Routers:224.0.0.5;OSPF IGP DR :224.0.0.6。
OSPFv3使用IPv6组播地址:OSPF IGP Routers:FF02::5;OSPF IGP DR:FF02::6。
OSPFv3的LSA头部
与OSPFv2的LSA头部相比,OSPFv3的LSA头部去掉了Options字段,并扩充了LS Type字段。OSPFv3同样使用LS Type、Link State ID和Advertising Router三元组唯一地标识一个LSA。
字段详解
LS Age:2Byte,LSA产生后所经过的时间,以秒为单位。无论LSA是在链路上传送,还是保存在LSDB中,其值都会在不停的增长。
LS Type:2Byte,LSA的类型。该字段的高3位标识LSA的通用属性,剩下的比特位标识LSA的特定功能。
U位标识了对未知LSA的处理方法,即标识了不识别LSA功能代码的路由器应如何处理LSA。
0:把此LSA当作具有链路本地泛洪范围来对待,从而只能泛洪到本地链路上。
1:把此LSA当作类型已知的LSA来处理,也就是存储下来并泛洪出去。
S2/S1位标识了LSA的泛洪范围。
S2 S1=0 0:链路本地范围内,即只在始发链路上泛洪。
S2 S1=0 1:区域范围内,即泛洪到始发区域内的所有路由器。
S2 S1=1 0:AS范围内,即泛洪到本AS的所有路由器。
S2 S1=1 1:预留。
LSA Function Code:13bit,LSA功能代码,标识了LSA的类型。
Link State ID:4Byte,本地32位标识符,与IPv6地址无关,与LSA中的LS Type和Advertising Router一起在路由域中描述一个LSA。OSPFv3与OSPFv2相比,Link State ID不再包含地址信息。
Advertising Router:4Byte,产生此LSA的路由器的Router ID。
LS Sequence Number:4Byte,LSA的序列号。其他路由器根据这个值可以判断哪个LSA是最新的。
LS Checksum:2Byte,除了LS Age外其它各域的校验和。
Length:2Byte,LSA的总长度,包括LSA Header,以字节为单位。
抓包观察
1 诞生时间:2秒
2 LSA类型:0x2009
3 对于未知LSA:进行本地链路泛洪
4 LSA的泛洪范围:区域内的路由器
5 LSA类型:第9类
6 本地标识符:0.0.0.1
7 产生此LSA的路由器RID
8 链路转态序列号(确定新旧):0x80000003
9 校验和:0x351b
10 LSA总长度:44字节
OSPFv3的LSA类型
OSPFv3与OSPFv2相比,具有类似的LSA名称,但是功能略有区别。
OSPFv3新增了两类LSA,包括:链路LSA和区域内前缀LSA。
OSPFv2的LSA |
OSPFv3的LSA |
异同点说明 |
||
类型 |
名称 |
类型 |
名称 |
|
1 |
Router-LSA(路由器LSA) |
0x2001 |
Router-LSA(路由器LSA) |
作用类似,但不再描述地址信息,仅描述拓扑结构 |
2 |
Network-LSA(网络LSA) |
0x2002 |
Network-LSA(网络LSA) |
|
3 |
Network-Summary-LSA(网络汇总LSA) |
0x2003 |
Inter-Area-Prefix-LSA(区域间前缀LSA) |
作用类似,名称不同 |
4 |
ASBR-Summary-LSA(ASBR汇总LSA) |
0x2004 |
Inter-Area-Router LSA(区域间路由器LSA) |
|
5 |
AS-External-LSA(AS外部LSA) |
0x4005 |
AS-External-LSA(AS外部LSA) |
作用与名称完全相同 |
7 |
NSSA LSA(非完全末梢区域LSA) |
0x2007 |
NSSA LSA(非完全末梢区域LSA) |
|
0x0008 |
Link-LSA(链路LSA) |
OSPFv3新增 |
||
0x2009 |
Intra-Area-Prefix-LSA(区域内前缀LSA) |
Type1:Router-LSA
在OSPFv2中,通过Link Type、Link ID以及Link Data来描述一个接口信息。在OSPFv3中,设备会为每个运行OSPFv3接口所在的区域产生一个LSA,描述了设备的链路状态(Link Type、Interface ID、Neighbor Interface ID和Neighbor Router ID )和开销,在所属的区域内传播。
字段详解
W:Wild-Card Receiver,值为1时,表示该路由器支持组播路由。
V:Virtual Link,值为1时,表示产生此LSA的路由器是虚连接的一端。
E:External,值为1时,表示产生此LSA的路由器是ASBR。
B:Border,值为1时,表示产生此LSA的路由器是ABR。
Options:3Byte,可选项。
DC:1bit,表示是否具有支持按需电路的能力。
R:1bit,指明始发路由器是否是一台有效的路由器。
NP:1bit,表示是否为NSSA区域。
MC:1bit,表示是否支持转发组播数据报文。
E:1bit,表示是否支持外部路由。
V6:1bit,表示是否参与IPv6路由计算。如果该位为0,表示该路由器或链路不参与IPv6路由计算。
Link Type:1Byte,链路类型。
1:点到点连接到另一台路由器。
2:连接到一个传送网络(Transit Network)。
3:保留。
4:虚链路。
Metric:2Byte,流量出接口的开销值。
Interface ID:4Byte,接口ID。
Neighbor Interface ID:4Byte,邻居的接口ID。
Neighbor Router ID:4Byte,邻居的路由器ID。
Type2:Network-LSA
与OSPFv2相比,OSPFv3的Network-LSA删除了网络掩码字段,仅用相连的路由器的Router ID来描述本网段的链路状态,由DR产生,在所属的区域内传播。
字段详解
Attached Router:4Byte,相连的路由器,指连接在同一个网段上的所有路由器的Router ID,也包括DR的Router ID。
Options:与Router-LSA中的Options字段相同。
Type3:Inter-Area-Prefix-LSA
与OSPFv2类似,由ABR产生,描述区域内某个IPv6地址前缀的路由,并通告给其他相关区域。每个IPv6地址前缀,ABR都会单独发送一个Type3的LSA。
字段详解
Metric:3Byte,到目的地址的开销值。
PrefixLength:1Byte,前缀的比特数。
PrefixOptions:1Byte,表示这个前缀的一些特性,以便在各种不同的路由计算时做相应的判断和处理。
P位: 传播位。如果一个NSSA区域的前缀需要被ABR传播出去,就需要设置这一位。
MC位: 组播位。如果设置为1,则这个前缀应该纳入组播计算中,否则不纳入组播计算。
LA位: 本地地址位。如果设置为1,则这个前缀是路由器的一个接口地址。
NU位: 非单播位。如果设置为1,则这个前缀不会纳入IPv6单播路由计算中。
Address Prefix:变长,IPv6地址前缀。
Type4:Inter-Area-Router-LSA
与OSPFv2类似,由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。对于所描述的每一个ASBR,ABR都会单独发送一个Type4的LSA 。
字段详解
Options:Options字段描述的不是源路由器的能力,而是目的路由器所支持的能力,所以此字段值应该等于目的路由器的Router-LSA的Options字段值。
Metric:3Byte,到目的地址的开销值。
Destination Router ID:4Byte,LSA中描述的目的路由器的Router ID,即ASBR的Router ID。
Type5:AS-External-LSA
与OSPFv2类似,由ASBR产生,描述到达AS外部的一个前缀的路由,通告到所有的区域(除了Stub区域和NSSA区域)。
字段详解
E:1bit,外部路由的Metric类型。
如果设置为1,表示此为2类外部路由,其Metric不随着路由的传递而增长。
如果设置为0,表示此为1类外部路由,其Metric随着路由的传递而增长。
F:1bit,如果设置为1,则表示后面的Forwarding Address可选字段存在。
T:1bit,如果设置为1,则表示后面的External Route Tag可选字段存在。
Metric:3Byte,到目的地址的开销值。
PrefixLength、PrefixOptions和Address Prefix为描述前缀的三元组,与Inter-Area-Prefix-LSA中该字段含义相同。
Referenced LS Type:2Byte,引用链路状态类型,表明这个LSA是否需要参考其他LSA。
0:不参考:
1:参考Router-LSA
2:参考Network-LSA
Forwarding Address:4Byte,可选的128位IPv6地址,当前面的F位为1时存在。表示到达目的的数据应该转发到这个地址。
External Route Tag:4Byte,可选的标记位。可以用于ASBR之间的通信。一个比较常见的例子是,在OSPF自治系统的两个边界路由器上进行路由引入时,通过对引入的路由进行标记,可以很方便地进行路由过滤。
Referenced Link State ID:4Byte,若Referenced LS Type不为0,则该字段存在,表示引用链路状态ID。
新增Type8:Link-LSA
每个设备都会为每个链路产生一个Link-LSA,仅在始发链路内泛洪。
Link-LSA作用:
向该链路上其他路由器通告本接口的链路本地地址。
向该链路上其他路由器通告本接口的IPv6前缀列表。
向该链路上其他路由器通告本链路始发的Network-LSA中设置的可选项。
字段详解
Rtr Pri:1Byte,该路由器在该链路上的优先级(Router Priority)。
Options:3Byte,提供给Network-LSA的Options。
Link-Local Interface Address:16Byte,路由器与该链路相连的接口上配置的链路本地地址(该地址只出现在Link-LSA中)。
Number of Prefixes:4Byte,该LSA中携带的IPv6地址前缀个数。
PrefixLength、PrefixOptions和Address Prefix为描述前缀的三元组,与Inter-Area-Prefix-LSA中该字段含义相同。
抓包观察
1 链路优先级:1
2 提供给Network-LSA的可选项:0x000013,R,E,V6
3 链路本地地址:FE80::2E0:FCFF:FE5C:405
4 包含的前缀数量:1条
5 前缀长度(掩码):64
6 前缀特性:0x00(无特性)
7 包含的前缀地址列表:2001:111:222:2::
新增Type9:Intra-Area-Prefix-LSA
Type9 LSA描述的是网段信息,只在所属的区域内传播,它需要依赖于拓扑信息,才能实现OSPFv3的路由计算。其类型可以分为两种:
每台设备均产生描述与Router-LSA相关联的IPv6前缀地址的Type9 LSA。
DR会产生描述与Network-LSA相关联的IPv6前缀地址的Type9 LSA。
字段详解
Number of Prefixes:4Byte,该LSA中携带的IPv6地址前缀个数。必要的话,可以通过多个Intra-Area-Prefix-LSA来携带前缀,这样可以控制LSA的长度。
Referenced LS type:4Byte,表明这个LSA是参考一个Router-LSA,还是一个Network-LSA。
1:表示参考一个Router-LSA
2:表示参考一个Network-LSA。
Referenced Link State ID:4Byte。
设为0:当这个LSA是参考一个Router-LSA时。
设为该链路的DR的Interface ID:当这个LSA是参考一个Network-LSA时。
Referenced Advertising Router:4Byte。
设为这个路由器的Router ID:当这个LSA是参考一个Router-LSA时。
设为该链路的DR的Router ID:当这个LSA是参考一个Network-LSA时。
PrefixLength、PrefixOptions和Address Prefix为描述前缀的三元组,与Inter-Area-Prefix-LSA中该字段含义相同。
Metric:2Byte,前缀开销值。与Router-LSA的接口开销值相同单位。
抓包观察
1 包含的前缀数量:1条
2 参考一个Network-LSA
3 DR的接口ID:0.0.0.5
4 DR的RID:2.2.2.2
5 前缀长度(掩码):64
6 前缀特性:0x00(无特性)
7 前缀开销:0
8 包含的前缀地址列表:2001:111:222:6::
IS-IS (IPv6)
IS-IS最初是为OSI网络设计的一种基于链路状态协议的动态路由协议。之后为了提供对IPv4的路由支持,扩展应用到IPv4网络,称为集成IS-IS。
IS-IS报文中的变长字段部分是多个TLV(Type-Length-Value)三元组,使用TLV结构构建报文使IS-IS更具灵活性和扩展性,增加新特性只需要增加新TLV即可。
为了支持IPv6路由的处理和计算,IS-IS新增了两个TLV(Type-Length-Value)和一个NLPID(Network Layer Protocol Identifier,网络层协议标识符)。
相关命令
开启IS-IS (IPv6)功能
[R1-isis-1]ipv6 enable
在接口下开启开启IS-IS (IPv6)功能
[R1-GigabitEthernet0/0/0]isis ipv6 enable 1
配置IS-IS接口在IPv6网络中的开销(当开销类型为narrow、narrow-compatible或compatible时,取值范围是1~63;当开销类型为wide或wide-compatible时,取值范围是1~16777214; 缺省值为10)
[R1-GigabitEthernet0/0/0]isis ipv6 cost 20 level-1
查看使能了IS-IS(IPv6)的接口信息
<R1>display isis interface
查看IS-IS(IPv6)的邻居信息
<R1>display isis 1 peer verbose
查看IS-IS(IPv6)的路由信息
<R1>display isis route
IS-IS (IPv6)新增TLV
232号TLV(IPv6 Interface Address)
描述接口地址。相当于132号TLV(用于描述IPv4接口地址),只不过把原来的32bit的IPv4地址改为128bit的IPv6地址。
字段解释
Type:8bit,TLV类型,此时值为232(0xE8)。
Length:8bit,TLV的Value部分长度。
Interface Address:128bit,IPv6地址。
在不同的PDU中,接口地址字段的内容是不同的。
对于Hello报文,“接口地址”只能包含发送Hello报文接口的链路本地地址。
对于LSP报文,“接口地址”只能包含分配给设备接口的非链路本地地址。
抓包观察
1 TLV类型:232号
2 长度:48字节
3 分配给设备接口的非链路本地地址
236号TLV(IPv6 Reachability)
标识内/外部可达性信息。相当于128号和130号TLV,通过X-bit来标识内/外部可达性信息。
上述IPv6 Reachability TLV在LSP中可以出现任意次数(包括0次)。 其中,链路本地前缀不是用这个TLV来发布。
字段解释
Type:8bit,TLV类型,此时值为236(0xEC)。
Length:8bit,TLV的Value部分长度。
Metric:32bit,度量值。
U:1bit,Up/Down位,标识这个前缀是否是从高Level通告下来的。
X:1bit,External Original位,标识这个前缀是否是从其他路由协议中引入的。
S:1bit,Sub-TLV Present位,子TLV标识位(可选)。
R:5bit,Reserve位,保留位。
Prefix Length:8bit,前缀长度。
Prefix:IPv6地址前缀。
Sub-TLV Length:8bit,子TLV长度。若S位置1,则存在。
Sub-TLV:子TLV。若S位置1,则存在。
129号TLV中新增NLPID
为了支持IPv6路由的处理和计算,IS-IS在129号TLV中新增了一个NLPID。
129号TLV(Protocol Supported)
字段解释
Type:8bit,TLV类型,此时值为129(0x81),表示支持协议TLV。
Length:8bit,TLV的Value部分长度。
NLPID:8bit,网络层协议标识符。若支持IPv4,则值为204(0xCC);若支持IPv6,则值为142(0x8E)
如果IS-IS支持IPv6,那么向外发布IPv6路由时必须携带NLPID值。
抓包观察
1 TLV类型:129号
2 长度:2
3 网络层协议标识符:支持IPv4和IPv6
IS-IS多拓扑技术
缺省情况下,在运行IS-IS的网络环境中,IPv4和IPv6的混合拓扑被看成是一个集成的拓扑,IS-IS针对IPv4和IPv6经计算形成相同的最短路径树。
IS-IS单拓扑存在的问题
混合拓扑中的一些路由器和链路不支持IPv6协议,但是支持双协议栈的路由器无法感知到这些路由器和链路,仍然会把IPv6报文转发给它们,这就导致IPv6报文因无法转发而被丢弃。
同样,存在不支持IPv4的路由器和链路时,IPv4报文也无法转发。
IS-IS多拓扑概述
IS-IS多拓扑(Multi-Topology,MT)特性是指在一个IS-IS自治域内运行多个独立的IP拓扑。例如IPv4拓扑和IPv6拓扑,而不是将它们视为一个集成的单一拓扑。这有利于IS-IS在路由计算中根据实际组网情况来单独考虑IPv4和IPv6网络。根据链路所支持的IP协议类型,不同拓扑运行各自的SPF计算,实现网络的相互屏蔽。
相关命令
开启多拓扑
[R1-isis-1]ipv6 enable topology ipv6
IS-IS多拓扑原理
IS-IS定义了新的TLV,该TLV中包含接口所属拓扑信息(MT信息)。MT信息的传播,使得网络按不同的拓扑分别进行SPF计算,最终实现拓扑分离。
229号多拓扑TLV
Type:8bit,TLV类型,此时值为229(0xE5),表示支持多拓扑。
O:1bit,Overload,超载位。
A:1bit,Attach,附着位。
MT ID:12bit,表示该接口属于什么拓扑。MT ID=0,用于标准IPv4拓扑。MT ID=2,预留给IPv6拓扑。
多拓扑TLV仅包含在IIH报文和LSP的0分片报文中。
抓包观察
1 TLV类型:229号
2 长度:4字节
3 支持IPv4
4 支持IPv6
配置举例---IS-IS双栈配置
上图分为2个区域,R1、R2、R4、R5为区域 49.0001,R3、R6、R7为区域 49.0002。等级方面R1、R4为level-1,R2、R3、R5、R6为level-1-2,R7为level-2。
全部路由器运行IPv4、IPv6双栈、IS-IS多拓扑。
R1配置(R4配置类似)
#
sysname R1
#
ipv6
#
isis 1
is-level level-1
network-entity 49.0001.0000.0000.0001.00
is-name R1
#
ipv6 enable topology ipv6
#
#
interface GigabitEthernet0/0/0
ipv6 enable
ip address 10.1.0.1 255.255.255.0
ipv6 address 2001:A01::1/64
isis enable 1
isis ipv6 enable 1
#
interface GigabitEthernet0/0/1
ipv6 enable
ip address 10.3.0.1 255.255.255.0
ipv6 address 2001:A03::1/64
isis enable 1
isis ipv6 enable 1
#
R2配置(R3、R5、R6配置类似)
#
sysname R2
#
ipv6
#
isis 1
network-entity 49.0001.0000.0000.0002.00
is-name R2
#
ipv6 enable topology ipv6
#
#
interface GigabitEthernet0/0/0
ipv6 enable
ip address 10.1.0.2 255.255.255.0
ipv6 address 2001:A01::2/64
isis enable 1
isis ipv6 enable 1
#
interface GigabitEthernet0/0/1
ipv6 enable
ip address 10.3.1.2 255.255.255.0
ipv6 address 2001:A03:1::2/64
isis enable 1
isis ipv6 enable 1
#
interface GigabitEthernet0/0/2
ipv6 enable
ip address 30.1.0.2 255.255.255.0
ipv6 address 2001:1E01::2/64
isis enable 1
isis ipv6 enable 1
#
R7配置
#
sysname R7
#
ipv6
#
isis 1
is-level level-2
network-entity 49.0002.0000.0000.0007.00
is-name R7
#
ipv6 enable topology ipv6
#
#
interface GigabitEthernet0/0/0
ipv6 enable
ip address 20.1.0.7 255.255.255.0
ipv6 address 2001:1401::7/64
isis enable 1
isis ipv6 enable 1
#
interface GigabitEthernet0/0/1
ipv6 enable
ip address 20.2.0.7 255.255.255.0
ipv6 address 2001:1402::7/64
isis enable 1
isis ipv6 enable 1
#
BGP4+
传统的BGP-4只能管理IPv4单播路由信息,BGP多协议扩展(MultiProtocol BGP,MP-BGP)提供了对多种网络层协议的支持。目前的MP-BGP,使用扩展属性和地址族来实现对IPv6、组播和VPN相关内容的支持,BGP协议原有的报文机制和路由机制并没有改变。
其中,MP-BGP对IPv6单播网络的支持特性称为BGP4+。BGP4+为IPv6单播网络建立独立的拓扑结构,并将路由信息储存在独立的路由表中,保持单播IPv4网络和单播IPv6网络之间路由信息相互隔离。
为了实现对IPv6协议的支持,BGP需要将IPv6协议的信息反映到NLRI属性中。
相关命令
配置对等体
[R1-bgp]peer 2001:A01:1::2 as-number 200
启用对等体
[R1-bgp]ipv6-family
[R1-bgp-af-ipv6]peer 2001:A01:1::2 enable
宣告路由
[R1-bgp-af-ipv6]network 2001:101:101::1 128
查看对等体
<R1>display bgp ipv6 peer
查看路由表
<R1>display bgp ipv6 routing-table
配置举例--简易BGP双栈
路由器R1与R2运行BGP双栈。
路由器R1为AS100,R2为AS200。
终端PC1可以通过路由器R1、R2的BGP双栈协议与R2通信(R2需要配置默认路由)
路由器R1主要配置
#
sysname R1
#
ipv6
#
router id 1.1.1.1
#
interface GigabitEthernet0/0/0
ipv6 enable
ip address 10.1.0.1 255.255.255.0
ipv6 address 2001:A01:1::1/64
#
interface GigabitEthernet0/0/1
ipv6 enable
ip address 192.168.1.1 255.255.255.0
ipv6 address 2001:C0A8:1::1/64
#
interface LoopBack0
ipv6 enable
ip address 1.1.1.1 255.255.255.255
ipv6 address 2001:101:101::1/128
#
bgp 100
peer 10.1.0.2 as-number 200
peer 2001:A01:1::2 as-number 200
#
ipv4-family unicast
undo synchronization
network 1.1.1.1 255.255.255.255
peer 10.1.0.2 enable
#
ipv6-family unicast
undo synchronization
network 2001:101:101::1 128
peer 2001:A01:1::2 enable
#
路由器R2主要配置
#
sysname R2
#
ipv6
#
router id 2.2.2.2
#
interface GigabitEthernet0/0/0
ipv6 enable
ip address 10.1.0.2 255.255.255.0
ipv6 address 2001:A01:1::2/64
#
interface LoopBack0
ipv6 enable
ip address 2.2.2.2 255.255.255.255
ipv6 address 2001:202:202::2/128
#
bgp 200
peer 10.1.0.1 as-number 100
peer 2001:A01:1::1 as-number 100
#
ipv4-family unicast
undo synchronization
network 2.2.2.2 255.255.255.255
peer 10.1.0.1 enable
#
ipv6-family unicast
undo synchronization
network 2001:202:202::2 128
peer 2001:A01:1::1 enable
#
ip route-static 0.0.0.0 0.0.0.0 10.1.0.1
#
ipv6 route-static :: 0 2001:A01:1::1
#
终端PC1配置
在终端PC1上测试与R2的联通性
BGP路径属性
BGP的Update报文在对等体之间传递路由信息,可以用于发布和撤销路由。
一个Update报文可以通告具有相同路径属性的多条路由,这些路由保存在NLRI(Network Layer Reachable Information,网络层可达信息)中。同时Update还可以携带多条不可达路由,用于告知对方撤销路由,这些保存在Withdrawn Routes字段中。
BGP4+中引入了两个NLRI属性,分别是:
MP_REACH_NLRI:Multiprotocol Reachable NLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。
MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多协议不可达NLRI。用于撤销不可达路由。
MP_REACH_NLRI格式
Address Family Identifier,AFI:地址族标识
Subsequent Address Family Identifier,SAFI:子地址族标识
Length of Next Hop Network Address:表示下一跳地址的长度,通常情况下为16。
Network Address of Next Hop:下一跳的地址
Reserved:保留字段
Network Layer Reachability Information:网络层可达信息,表示含有匹配相同属性的路由信息。当此字段为0时,表示为缺省路由。
抓包观察
1 地址族标识:2表示IPV6
2 子地址族标识:1表示单播
3 下一跳地址:2001:a01:1::1
4 网络层可达信息:2001:101:101::1/128
MP_UNREACH_NLRI格式
Withdrawn Routes:表示撤销的路由条目。格式为<掩码长度,路由前缀> ,当此掩码长度为0时,表示为缺省路由。
抓包观察
1 撤销的路由条目:2001:101:101:1/128