SDN(五) Netgear R6220从刷机到配置 OpenvSwitch交换机
1 引言
积跬步以至千里,积怠情以至深渊。
本文将介绍在Netgear R6220路由器上进行基于OpenVswitch的openflow实验。路由器是刷了编译了OpenvSwitch的OpenWRT固件的,具体可参考刷机教程。本文主要以R6220为例介绍从刷机到配置 OpenvSwitch交换机的整个过程。
2 Netgear R6220刷机
- 收到原厂Netgear R6220路由器后,用一根网线接上笔记本网口和路由器LAN口。
- 打开浏览器,输入192.168.1.1,进入路由器原厂管理界面,设置好路由器的管理密码。
- 在浏览器中输入网址
http://192.168.1.1/setup.cgi?todo=debug
,并回车,开启路由器的telnet功能。
- Windows系统下打开本地命令提示符(其他系统也可以),输入
telnet 192.168.1.1
,终端登录路由器,用户名为admin
,密码为上边设置的。
- 进入后,将带有编译好的固件(编译了OpenVSwitch的OpenWRT固件,可以到我的云盘中提取,链接:
https://pan.baidu.com/s/1Y3tq0nsxfi5_wX7FO4xXCw
,提取码:ew7d
)的U盘插入路由器USB口。
- 而后,进入…./ramips/mt7621,开始刷入固件,操作步骤如下截图所示。

NT:一定要先刷kernel,再刷rootfs。同时在刷固件过程中一定不要插拔网线,否则变砖!!
- 刷完固件重启路由器,耐心等待重新获取得到网卡信息,首先重新以网页方式登录路由器新固件OpenWRT的管理界面(方法为在网页中输入192.168.1.1),进入网页后,只设置密码而不做其他多余操作(例如进入网络接口界面,因为一旦进入就会默认生成一次配置,会与之后的终端配置造成冲突),否则影响最终的配置,导致路由器变砖。
- 紧接着,ssh进入OprnWRT系统,用户名为
root
,密码为上一步设置的密码。
- 进入/etc/config下配置network文件和wireless文件,文件的配置需要根据物理设备的网卡信息进行正确配置,因此首先摸清Netgear R6220的网络配置信息尤为关键,否则将导致路由器变砖,或者无法配置好网桥信息。以下部分,第3节主要介绍物理设备网络信息,第4节主要介绍具体的network文件和wireless文件配置,第5节主要介绍针对第4节的配置信息进行的网桥搭建过程。
NT:刷机变砖请参考本人博客Netgear救砖教程。
3 Netgear R6220网络配置信息介绍


4 Netgear R6220路由器的网络文件配置
4.1 network文件配置
关于配置文件中的配置代码对应功能介绍,请参考本人博客SDN(二),本人对于network文件的配置如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0'
config globals 'globals' option ula_prefix 'fd22:7199:e878::/48'
config interface 'lan' option type 'bridge' option ifname 'eth0.3' option proto 'static' option ipaddr '192.168.3.1' option netmask '255.255.255.0' option ip6assign '60'
config device 'lan_dev' option name 'eth0.3' option macaddr '8c:3b:ad:e4:5a:b1'
config interface 'wan_controller' option ifname 'eth0.4' option proto 'static' option ipaddr '10.12.34.248' option netmask '255.255.255.0'
config device 'wan_dev' option name 'eth0.4' option macaddr '8c:3b:ad:e4:5a:b0'
config interface 'wan6' option ifname 'eth0.4' option proto 'dhcpv6'
config interface 'lan2' option ifname 'eth0.2' option proto 'static'
config interface 'lan3' option ifname 'eth0.1' option proto 'static'
config interface 'lan4' option ifname 'eth0.0' option proto 'static' config switch option name 'switch0' option reset '1' option enable_vlan '1' config switch_vlan option device 'switch0' option vlan '0' option ports '0 6t' config switch_vlan option device 'switch0' option vlan '1' option ports '1 6t' config switch_vlan option device 'switch0' option vlan '2' option ports '2 6t' config switch_vlan option device 'switch0' option vlan '3' option ports '3 6t' config switch_vlan option device 'switch0' option vlan '4' option ports '4 6t'
|
配置完成后,输入/etc/init.d/network restart
进行网络重启。
4.2 wireless文件配置
在配置好network后,可参照如下代码进行无线设置(也可以进入网页,直接针对无线进行可视化配置),关于Neatgear中的wireless文件本人配置如下,此时无线和LAN1分配在了同一个网段,因此wifi连接路由器也可以进入内网配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| config wifi-device 'radio0' option type 'mac80211' option channel '11' option hwmode '11g' option path 'pci0000:00/0000:00:01.0/0000:02:00.0' option htmode 'HT20' option country '00' option legacy_rates '1'
config wifi-iface 'default_radio0' option device 'radio0' option network 'lan' option mode 'ap' option encryption 'none' option ssid 'OpenWrt2_0' option ifname wlan0
config wifi-device 'radio1' option type 'mac80211' option channel '36' option hwmode '11a' option path 'pci0000:00/0000:00:00.0/0000:01:00.0' option htmode 'VHT80' option country '00' option legacy_rates '1'
config wifi-iface 'default_radio1' option device 'radio1' option mode 'ap' option encryption 'none' option ssid 'OpenWrt2_1' option ifname wlan1
|
配置完成后,再次输入/etc/init.d/network restart
进行网络重启。
5 Netgear R6220中OpenVswitch的网桥创建及配置
针对network中的配置,网桥的对应配置如下:
1 2 3 4 5 6 7 8 9 10
| ovs-vsctl add-br br0 ovs-vsctl set-fail-mode br0 secure|standalone
ovs-vsctl add-port br0 eth0.0 -- set Interface eth0.0 ofport_request=4 ovs-vsctl add-port br0 eth0.1 -- set Interface eth0.1 ofport_request=3 ovs-vsctl add-port br0 eth0.2 -- set Interface eth0.2 ofport_request=2 ovs-vsctl add-port br0 wlan0 -- set Interface wlan0 ofport_request=5 ovs-vsctl add-port br0 wlan1 -- set Interface wlan1 ofport_request=6 ovs-vsctl set-controller br0 tcp:10.12.34.180:6653 tcp:10.12.34.180:6654
|
在对网桥进行以上配置后,为运行控制器的主机添加对应网络配置(IP为10.0.30.1/24,网关为10.0.30.254),并运行控制器代码。Netgear R6220路由器即可连接上该控制器。
此外,其他关于网桥的相关操作如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| ovs-vsctl show
ovs-vsctl del-br br0
ovs-vsctl set bridge br0 datapath_type=netdev ovs-vsctl get bridge br0 datapath_type ovs-vsctl set bridge br0 other_config:datapath-id=新dpid ovs-vsctl get bridge br0 datapath-id
ovs-vsctl del-controller br0 ovs-vsctl set-controller br0 tcp:1.2.3.4:6633
ovs-vsctl list controller ovs-vsctl del-fail-mode br0 ovs-vsctl get-fail-mode br0
ovs-vsctl get controller br0 connection-mode ovs-vsctl set controller br0 connection-mode=out-of-band ovs-vsctl set controller br0 connection-mode=in-band
ovs-vsctl list-br ovs-vsctl list bridge br0 ovs-vsctl list-ports br0 ovs-vsctl list port br0 eth0.0
ovs-vsctl get bridge br0 stp_enable ovs-vsctl set bridge br0 stp_enable=true
ovs-vsctl get Interface eth0.0 ofport ovs-vsctl set Interface eth0 type=internal
ovs-vsctl set Interface eth0.0 options:link_speed=1G ovs-vsctl remove Interface eth0.0 options link_speed
ovs-vsctl del-fail-mode br0 ovs-vsctl set-fail-mode br0 secure ovs-vsctl get-fail-mode br0
ovs-vsctl set bridge br0 protocols=OpenFlow12,OpenFlow13 ovs-vsctl clear bridge br0 protocols
ovs-ofctl dump-flows br0 ovs-ofctl del-flows br0 ovs-ofctl show br0 vs-vsctl get Interface br0 ofport
|
OpenVSwitch中常见的port类型介绍:
netdev: 通用网卡设备包括物理网卡以及虚拟网卡
接收:网卡收到报文后回直接通过OpenvSwitch接收函数处理,不会再走传统内核协议栈;
发送:OpenvSwitch中的一条flow指定从网卡port发出时通过该网卡设备发送。
internal: OpenvSwitch创建的一种虚拟网卡设备
接收:OpenvSwitch所在主机通过internal设备网卡发送的报文(协议栈路由查找通过internal设备发送),就进入OpenvSwitch接收处理函数.。报文送入OpenvSwitch处理;
发送:OpenvSwitch中的一条flow指定从internal port发出时,该报文被重新注入内核协议栈, 标记为从internal网卡接收。
gre device: L2 gre tunnel设备
接收:协议栈收到gre报文后,传递给L4层解析gre header, 然后传递给OpenvSwitch接收处理函数;
发送:OpenvSwitch中的一条flow指定从gre设备发送, 报文会根据flow规则加上gre header和ip header,查找路由发送