OVS中基于VLAN的DHCP地址池实现 | SDNLAB | 专注网络创新技术
作者简介:刘成泽,受雇于Setes信息技术公司,高级工程师,目前在南京工作,主要在VCPE和路由器相关研究与开发
虚拟局域网是虚拟局域网技术,在网络管理、云计算平台方面,特别是在目前虚拟交换OVS方面,VLAN应用更加灵活和重要,VLAN应用在OVS中的基本用途见另一作者的文章,VLAN应用和基于OVS的实现,说明VLAN网络的DHCP服务器如何在不同VLAN网络中分配DHCP地址库的不同部分。
通常,DHCP服务器能够根据DHCP协议的选项扩展字段分配不同的地址集合,而且由于VLAN是二级网络属性,在DHCP高级应用程序中没有VLAN信息,希望根据VLAN信息分割地址集合,或者以某种方式将VLAN信息纳入申请级别,或者在不同VLAN网络中提供多种DHCP服务,这通常比较容易选择。
例如,在下图中,在Linux系统的网络节点中,不同的外部 vlan 网络可以与节点中不同的 VM 主机进行通信,通过 eth0 接口连接的设备需要根据不同的 vlans 获得网络不同部分的地址, eth0 接口为 eth0.1 和 eth0.2 创建虚拟界面, 使用 vcongig 工具和 VM 龙头桥, 并随后在每座桥界面上启动 DHCP 服务器服务, 从而完成在不同 vlan 之间分割不同地址集合的功能。
基于Linux虚拟界面的上述VLAN处理将需要建立许多VLAN虚拟界面,以处理来自不同界面的不同VLAN虚拟界面,例如存在两个eeth0和eth1接口,并需要建立四个th 0.1、eth 0.2、eth1.1和eth1.2虚拟界面,这些界面相对繁琐,在网络界面和VLAN子网络中进一步发展,并且如果在虚拟交换OVS中完成虚拟界面,则需要建立多个OVS桥。
在OVS网络中,有一个内部型号的桥梁界面,通过设置界面标签可以处理不同的软体信息,通过启动DHCP服务可以分配不同的地址集合,网络可以实现如下图所示:
其中,Eth1和Eth2分别是位于TRUNK过境链上的信息,因为OVS、dhcp1和dhcp2分别是标签1和2的内部型桥梁,地址配置在dhcp1和dhcp2上,Dhcp2服务器启用,从而完成了不同地址库不同的VLAN分配要求。
创建 ovs 桥桥
Java
# ovs-vsctl add-br br-ovs
1
# ovs-vsctl add-br br-ovs
Eth1和Eth2加入了OVS。
Java
# ovs-vsctl add-port br-ovs eth1
# ovs-vsctl add-port br-ovs eth1
12
# ovs-vsctl add-port br-ovs eth1# ovs-vsctl add-port br-ovs eth1
创建连接界面, 启用 dhcp 服务 dhcp1 和 dhcp2
Java
# ovs-vsctl add-port br-ovs dhcp1 -- set interface dhcp1 type=internal
# ovs-vsctl add-port br-ovs dhcp2 -- set interface dhcp2 type=internal
12
# ovs-vsctl add-port br-ovs dhcp1 -- set interface dhcp1 type=internal# ovs-vsctl add-port br-ovs dhcp2 -- set interface dhcp2 type=internal
设置 dhcp1 和 dhcp2 标签
Java
# ovs-vsctl set Port dhcp1 tag=1
# ovs-vsctl set Port dhcp2 tag=2
12
# ovs-vsctl set Port dhcp1 tag=1# ovs-vsctl set Port dhcp2 tag=2
上述配置如下:
连接接口ddhcp1 和 dhcp2 的配置地址
Java
# ifconfig dhcp1 192.168.1.1
# ifconfig dhcp2 10.0.0.1
12
# ifconfig dhcp1 192.168.1.1# ifconfig dhcp2 10.0.0.1
在 dhcp1 和 dhcp2 上启动 dhcp
Java
# dnsmasq --bind-interfaces --except-interface=lo --interface dhcp1
--dhcp-range 192.168.1.2,192.168.1.10
# dnsmasq --bind-interfaces --except-interface=lo --interface dhcp2
--dhcp-range 10.0.0.2,10.0.0.10
1234
# dnsmasq --bind-interfaces --except-interface=lo --interface dhcp1 --dhcp-range 192.168.1.2,192.168.1.10# dnsmasq --bind-interfaces --except-interface=lo --interface dhcp2 --dhcp-range 10.0.0.2,10.0.0.10
运行 dhcp clit, 使用 PC 设备获取地址, 并分别切换到 eth1 (或 eth2) 的标签1 和标签2 访问 。
当标签值为 1 时, 通过 tcpdump 袋可以在 eth1 上看到 vlan1 的 dhcp 如下:
dhcp 报告在dhcp1上通过一个tcpdump抓抓包可以看到如下:
标签值为2, Vlan2的 dhcp 报告通过一个tcpdump 抓抓袋在 eth1 上可以看到如下:
dhcp 报告在dhcp2上通过一个tcpdump抓抓包可以看到如下:
从上述验证中可以看出,两个桥梁界面 dhcp1 和 dhcp2 选择只处理根据配置的标记与 vlan 值相对应的信息,并完成了网络不同部分的 VLAN 隔离,从而实现了不同 VLAN 不同 DHCP 地址库的功能。
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。