linux内核6rd实现了解

应该来说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.csdn.net/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路由查找的目的设备进行发送
5)6rd xmit是否经过完整的ipv4协议栈
以本地local报文身份出去,经过OUTPUT、POSTROUTING
具体调用为:iptunnel_xmit -> ip_local_out
***********************************
6rd rx方向
***********************************
1)外层封包v4经过 v4协议栈PREROUTING、INPUT hook点,最终调用inet_protos->handler(tunnel64_protocol.tunnel64_rcv -> sit_handler.handler -> ipip6_rcv)
2)ipip6_rcv刷选tunnel通道ipip6_rcv -> ipip6_tunnel_lookup
    从最严格到最宽松的顺序命中,最简单的是只要接收接口和local地址对应上即可
3)ipip6_rcv是否经过完整的ipv6协议栈
    最终将报文传递给netif_rx重新进入协议栈
***********************************

上层调用:
***********************************
例子1:(通过网关IPV6_ADDR_COMPATv4地址类型间接指定目的IPv4地址)
/bin/ip tunnel add tun6rd mode sit local 10.10.10.11 ttl 64 
/bin/ip tunnel 6rd dev tun6rd 6rd-prefix 2001::/32 6rd-relay_prefix 10.0.0.0/8 
/bin/ip link set tun6rd up 
/bin/ip -6 addr add 77a7:9be0:a0a:b00:4e6e:6eff:fe2f:88da/64 dev br0 
/bin/ip -6 addr add 77a7:9be0:a0a:b00:4e6e:6eff:fe2f:88da/32 dev tun6rd 
/bin/ip -6 route add ::/0 via ::10.10.10.12 dev tun6rd 
例子2:(IPv6目的映射目的IPv4地址)
[root@RA ~]# ip tunnel add 6rd mode sit local 192.168.1.107
[root@RA ~]# ip tunnel 6rd dev 6rd 6rd-prefix 2019::/16
[root@RA ~]# ip link set 6rd up
[root@RA ~]# 
[root@RA ~]# ip -6 addr add 2019:c0a8:016b:1234::1/64 dev 6rd   #配置隧道接口地址,192.168.1.107转换成16进制是"c0a8:016b"
[root@RA ~]# ip -6 route add 2019::/16 dev 6rd    #添加2019::/16的路由指向隧道接口
***********************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值