1、IPv6路由
1.1 源和目的机在同一链路的数据转发(on-link)
- 通过地址前缀判断是否同一链路:on-link
- 发起地址解析(与v4的ARP不同)
- 独立于媒体层
- 利用三层安全机制
- 改广播为组播,降低骚扰范围
- 由ND协议完成
1.1.1 ND(Neighbor Discover,邻居发现)协议
- 地址解析
- 替代ARP
- 邻居不可达检测
- 无状态地址自动配置
- 路由器发现
- 接口ID自动生成
- 重复地址检测(DAD)
- 前缀重新编址
- 路由器重定向
ICMPv6类型 | 消息名称 | ICMPv6类型 | 消息名称 |
---|---|---|---|
Type=133 | RS (路由器请求) | Type=136 | NA (邻居公告) |
Type=134 | RA (路由器公告) | Type=137 | Redirect |
Type=135 | NS (邻居请求) |
IPv6地址解析
- 查找邻居缓存表(ipv6 nc),没有则进行地址解析
- 源主机发送组播NS报文,该报文的目的地址为目标IPv6地址所对应的被请求节点组播地址(Solicted-node),在其中也包括了自己的链路层地址;
- 目标主机收到NS报文之后,就会得到发送主机的IPv6地址和相应的链路层地址;
- 目标主机向源主机单播发一个邻接点公告报文(NA),该报文中包含自己的链路层地址
实例:
Attention: 邻居缓存表(neighbor cache)
- 存储最近通过信的邻居的信息
- 每条记录包括单播IPv6地址、MAC地址、标记、下次NUD时间
- NUD:Neighbor Unreachability Detection,不可达检测,测试自己和邻居之间的通达性
邻居缓存表中记录的状态:
状态 | 含义 |
---|---|
INCOMPLETE(未完成状态) | 添加新记录,还未有MAC地址,可尝试多次组播NS |
REACHABLE(可达状态) | 收到NA确认 |
STALE(失效状态) | 已经过了reachable time时效 |
DELAY(延迟状态) | 等待NA确认,默认5s |
PROBE(探测状态) | delay时效过, 可发3次(间隔1s) NS |
1.2 源和目的机不在同一链路的数据转发(off-link)
1.2.1 主机——路由器(主机发给哪个路由器)
DestinationCache(目的缓存表)
- 初始时为空
- 某个地址在该表中查不到时, 改查路由表, 做on-link判断:
- 是on-link的,将目的地址本身加入DC表的nexthop域;
- 是off-link的,将路由表中的下一跳加入DC的nexthop域。
重定向问题
优化主机-路由器之间的路由
若路由器发现报文的出口和入口相同或者源地址与报文下一跳同属一个网段,则发出重定向报文。
1.2.2 路由器——路由器(路由器发给哪个路由器)
核心:路由表
- 直连路由
- 静态路由
- IPv4:ip route
- IPv6:ipv6 route
- 动态路由
- 内部网关协议
- 距离矢量路由选择协议:RIPng
- 链路状态路由选择协议:OSPFv3
- 边界网关协议
- BGP4+
2、IPv6过渡技术
2.1 三种主要地方共存技术
2.1.1 双栈
- 网络设备上运行IPv6/IPv4双协议栈
适用于混合环境。基础设施设备,如路由器、交换机、公用服务器等需要运行和支持双栈;
到底使用哪个地址:选择高优先级地址,根据地址选择策略表:优先级、范围
Happy eyeballs dual stack
先尝试IPv6,不成功则转向IPv4
要求,DNS服务器有双栈记录,“A”,“AAAA”
2.1.2 隧道
- IPv6网络上承载IPv4分组,或相反
大致分为两类
- 手动隧道:事前配置
- 自动隧道:创建和拆除都依赖当前网络条件
IPv6分组通过IPv4网络
- 适用于IPv6孤岛情形
- IPv6分组作为载荷搭载到IPv4分组中,在这种情形下,IPv4分组头部的protocol=41
IPv4分组通过IPv6网络
- 类似IPv6通过IPv4
- DSTM(Dual Stack Transition Mechanism)
2.1.3 翻译/转换
地址、分组、端口的转换
从IPv4转换到IPv6, 或反过来,不仅发生在网络层还有传输层和应用层
当双栈和隧道都无法使用的时候,才使用;适用纯IPv4节点和IPv6节点的通信。
最后更新: 2018年11月10日 11:47
原始链接: https://silence-linhl.github.io/blog/2018/11/10/IPv6-router/