应该来说6rd(6in4)在国内不常用(国内采用的是dslite(4in6),即从主干开始往下推IPv6技术),国外反而还用的多些(个人感觉国外的这种支持反而更像是试探)
6rd(内核实现文件net/ipv6/sit.c)
6rd tx方向
***********************************
1)经过完整的ipv6协议栈,最终路由找到6rd接口进入xmit函数处理
2)6rd xmit时IPv4 dst目的地址查找及确定
看上去是支持3种找法,我们目前用到的是2种:
一种是:根据设置的IPv6 prefix前缀查找,主要实现函数为try_6rd(IPv6目的地址已经映射了IPv4地址,映射方式参见https://blog.youkuaiyun.com/zdl244/article/details/103280256)
一种是:上述找不到的情况下会通过dst网关地址查找,如果是IPV6_ADDR_COMPATv4地址类型(::xxx.xxx.xxx.xxx)则直接用xxx.xxx.xxx.xxx地址
上述3种查找是在没有指定remote情况下,如果指定remote,直接使用remote作为ipv4 dst目的地址
3)6rd xmit下一级设备查找
还是会查ipv4的路由表,具体调用函数为ip_route_output_ports
我们也通过ip route show看到有一条route专门用户目的IPv4转发
4)封包
使用tunnel建立时的local地址为ipv4 src地址,IPv4 dst地址为目的地址,ipv4路由查找的