RADVD及SLAAC简单介绍
sonic中RADVD的实现
RADVD是什么?
IPv6路由器通告守护程序(RADVD)组播自动配置参数并响应来自客户端的路由器请求。客户端可以通过路由器通告确定默认路由器和其他重要路由器信息。这些路由器通告告诉客户端是为自己分配IP地址还是从DHCPv6服务器获取IP地址。
sonic中RADVD实现主要在radv容器中,在设备启动时或者重启radv容器,sonic将会通过radv容器中的start.sh
文件,启动radvd服务。在启动服务时,还将会根据模板文件在etc/radvd.conf
中生成radvd配置文件。最终启动radvd服务后,RADVD将会根据配置文件中的配置进行路由器通告。
地址配置方式简介
生成全球单播地址或唯一本地地址,有两种方式
-
手动配置
-
自动配置
其中自动配置,又可分为:
-
无状态(Stateless): 根据路由通告报文RA(Router Advertisement)包含的prefix前缀信息自动配置IPv6地址,IPv6地址组成方式为Prefix + (EUI64或随机)。 Stateless也可称为SLAAC (Stateless Address Auto-configuration)。无状态下,不可控、难管理。在网络有只有网关,没有IPv6地址管理者,因而无人去识别客户端,每个客户端根据网关发送的相同RA报文(FF02::1 –所有主机),自行配置IPv6地址;
-
有状态(Stateful): 通过DHCPv6获得IPv6地址。可控、可管理。在网络中存在一个IP地址管理者,它能识别客户端,根据不同的客户端分配对应的IPv6地址,客户端与服务器之间需要维护IPv6地址的租期及续约。实现这种效果的,就是DHCPv6协议(管理者就是DHCPv6 Server)。
其中“有状态”又分为2种
-
有状态DHCPv6(Stateful DHCPv6):IPv6地址、其他参数(如DNS)均通过DHCPv6获取
-
无状态DHCPv6(Stateless DHCPv6):IPv6地址依然通过路由通告RA方式生成,其他参数(如DNS)通过DHCPv6获取
本次配置就是通过无状态自动配置
的方式在客户端生成IPv6地址。这种这种配置方式即为SLAAC。
sonic中SLAAC配置
目前sonic当前版本不支持命令行方式配置地址生成方式。所有下面将介绍如何通过修改文件的方式来自动生成IPv6单播地址。
修改启动文件
radv服务启动文件在/usr/bin/start.sh
,如下所示
注 意 :默认红框标识的代码未被注释,为了启动radv服务,需要先将其注释掉。
对于此段代码判断的原因,通过在社区查找,找到以下回复:
Q: What is the significance of DEVICE_ROLE and difference between ToRRouter & LeafRouters. Why is radvd configured and started only when Sonic DEVICE_ROLE is set to "ToRRouter"?
A: DEVICE_ROLE signifies the role of the device(switch) in the DC network. ToRRouter meaning "Top of the Rack Router/Switch", LeafRouter is the middle device between ToRRouter and Spine. The radv is the IPv6 ND protocol part feature, used by routers to advertise their router-role information to the shared-link devices. The ToRs often directly connect to the Servers(host), so ToRs need the radvd function to spread the router-link informations. But radvd function should not be enabled for the LeafRouter as it is not directly connected to the servers(hosts).
修改radvd配置的模板文件
在radv服务启动时,将会根据radv配置模板文件生成配置文件。
此配置模板文件是jin2格式文件。
配置模板文件在/usr/share/sonic/templates/radvd.conf.j2
,默认模板配置文件如下所示:
根据配置文件可得出以下结论:
-
配置文件注意根据vlan接口生成对应的接口配置,所以必须先添加vlan并且给vlan配置IPv6地址
-
同一个vlan可以有多个prefix
配置参数介绍
此默认配置文件是根据DHCPv6服务来获取IPv6地址,所以需要对模板文件进行修改,下面介绍一下主要参数的具体作用。
-
AdvSendAdvert on|off
是否(开启)路由通告转发
一般使用都是需要开启 默认off。
-
IgnoreIfMissing on|off
接口不存在是否退出radvd。
on 不退出 ,off 退出 ,默认off。
-
MaxRtrAdvInterval
非确认多播RA的最大时长,默认600.
-
MinRtrAdvInterval
非确认多播RA的最小时长,默认200.
-
AdvManagedFlag on|off
设置后接口除了无状态配置,可以使用有状态配置进行接口IP配置。默认关闭
-
AdvOtherConfigFlag on|off
设置后接口采用有状态流程配置接口其他信息(非IP),默认关闭。
-
AdvOnLink on|off
前缀是否可以作为无状态链路配置。默认打开
-
AdvAutonomous on|off
前缀可用于自动地址配置,默认打开
修改配置模板文件
主要修改报文的M/O 及A,对应修改后的配置文件如下:
将AdvAutonomous
修改为on
,用于无状态自动配置。
AdvManagedFlag
和AdvOtherConfigFlag
修改为off
,关闭有状态及无状态DHCPv6地址配置。
配置vlan及重启容器
对于设备配置,大概分以下三步:
-
添加vlan
-
给vlan添加IPv6地址
-
重启radv容器
在重启radv容器后,radv容器会启动,进行以下检查,确认服务启动及设备工作正常:
-
检查radvd服务是否启动
ps -ef |grep radv
-
检查是否生成radvd.conf配置文件
cat /etc/radvd.conf
-
在vlan接口抓包,看是否会发出RA报文
sudo tcpdmp -i Vlan1234 -vv -w tes.pcap
至此,设备基本配置已经完毕,现在可以通过将交换机连接服务器或者客户机,在对端看是否可以自动获取IPv6全球单播地址。
SLAAC功能验证
功能简述:
15.3设备Ethernet18和78服务器eth3对接。创建vlan1234,配置IPv6地址,并将Ethernet18接口加入vlan124.
重启78服务器eth3接口,观察eth3接口是否会自动生成IPv6全球单播地址。
Step 1 : 创建vlan并配置IPv6地址
admin@sonic:~$ show ipv6 interface
Interface Master IPv6 address/mask Admin/Oper
----------- -------- ----------------------- ------------
Vlan1234 FD12:3456:6789::1000/64 up/up
Step 2 : 将Ethernet18加入vlan123
admin@sonic:~$ show vlan brief
+-----------+-------------------------+------------+----------------+
| VLAN ID | IP Address | Ports | Port Tagging |
+===========+=========================+============+================+
+-----------+-------------------------+------------+----------------+
| 1234 | FD12:3456:6789::1000/64 | Ethernet18 | untagged |
+-----------+-------------------------+------------+----------------+
Step 3 : 观察服务器eth3接口IP
eth3 Link encap:Ethernet HWaddr f0:79:59:39:44:f2
inet6 addr: fd12:3456:6789:0:cfbf:b1a1:b6f0:e4b8/64 Scope:Global
inet6 addr: fd12:3456:6789:0:f5a8:c2fd:9f44:c7c6/64 Scope:Global
inet6 addr: fe80::64c7:7f5e:f2d9:566f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:2000 Metric:1
RX packets:417142 errors:0 dropped:991 overruns:0 frame:0
TX packets:2031101 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:50444898 (50.4 MB) TX bytes:516551747 (516.5 MB)
Memory:bf700000-bf71ffff
Step 4: 通过ping看是否可以相互ping通
交换机ping 服务器
服务器ping交换机
抓包查看ping包
标签:配置,SLAAC,radv,地址,DHCPv6,文档,IPv6,radvd From: https://www.cnblogs.com/sun-windsing/p/16632516.html