OVN实验----L2互通

概述

尽量少贴概念,只同步一些必要的名词。
central: 可以看做中心节点,central节点组件包括OVN/CMS plugin、OVN Northbound DB、ovn-northd、OVN Southbound DB。
hypervisor: 可以看做工作节点,hypervisor节点组件包括ovn-controller、ovs-vswitchd、ovsdb-server。
(central节点相关组件和hypervisor组件可以运行在同一个物理节点上)

OVN实验----L2互通_第1张图片
本次实验主要是L2互通测试,即在HV上创建同网段两个容器,通过分布式逻辑交换机互通。

物理组网

central:172.16.181.18
HV:host43 172.16.181.43、host44 172.16.181.44
OVN实验----L2互通_第2张图片

逻辑组网

容器red11和red12分别在不同controller上封装geneve通过ls-red互通,ls-red是分布式逻辑交换机,
OVN实验----L2互通_第3张图片

安装

根据不同角色安装所需的软件包
Central:
wget -O /etc/yum.repos.d/ovs.repo https://copr.fedorainfracloud.org/coprs/leifmadsen/ovs-stable-release/repo/epel-7/leifmadsen-ovs-stable-release-epel-7.repo --no-check-certificate
yum install -y openvswitch-ovn-central.x86_64 openvswitch-ovn-host.x86_64
systemctl start ovn-northd.service
systemctl enable ovn-northd.service
HV:
wget -O /etc/yum.repos.d/ovs.repo https://copr.fedorainfracloud.org/coprs/leifmadsen/ovs-stable-release/repo/epel-7/leifmadsen-ovs-stable-release-epel-7.repo --no-check-certificate
yum install -y openvswitch.x86_64 openvswitch-ovn-host.x86_64
systemctl enable openvswitch.service ovn-controller.service
systemctl start ovn-controller.service

配置

Central 开放接口

关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
开放北向接口6641,南向接口6642:
ovn-nbctl set-connection ptcp:6641:172.16.181.18
ovn-sbctl set-connection ptcp:6642:172.16.181.18
netstat -lntp
在这里插入图片描述

Controller 对接Central南向接口

关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
host43连接Central南向数据库:
ovs-vsctl set open . external-ids:ovn-remote=tcp:172.16.181.18:6642
ovs-vsctl set open . external-ids:ovn-encap-type=geneve
ovs-vsctl set open . external-ids:ovn-encap-ip=172.16.181.43

netstat -antp | grep ovn 可以看到6642 ESTABLISHED状态
在这里插入图片描述
类似操作配置host44

操作完后,在central南向数据库显示两个chassis
ovn-sbctl show
OVN实验----L2互通_第4张图片

在其中一台host43上,显示到host44的geneve接口
ovs-vsctl show
OVN实验----L2互通_第5张图片

HV上新建容器

host43:
新建容器red11
docker pull busybox
docker run -itd --name=red11 --net=none --privileged=true busybox
容器连接到br-int
ovs-docker add-port br-int ifred11 red11
ovs-vsctl show 会显示在br-int上增加了1个port: 91c34a4207a94
OVN实验----L2互通_第6张图片
绑定接口
ovs-vsctl set interface 91c34a4207a94_l external_ids:iface-id=ifred11 (ifred11是稍后配置在central上的名称)

设置red11的MAC和IP
docker exec -it red11 sh 进入red11
ip link set ifred11 address 00:00:00:00:01:11 (修改一个简单的数值)
ip add add 192.168.1.11/24 dev ifred1
OVN实验----L2互通_第7张图片

配置逻辑交换机

在Central上,新建ls-red
ovn-nbctl ls-add ls-red

添加接口,这里绑定mac地址要和对应的容器一致
ovn-nbctl lsp-add ls-red ifred11
ovn-nbctl lsp-set-addresses ifred11 00:00:00:00:01:11
ovn-nbctl lsp-set-port-security ifred1 00:00:00:00:01:11

添加完接口后
chassis host43会显示绑定接口ifred11
OVN实验----L2互通_第8张图片

类似步骤在ls-red上添加ifred12接口,并在host44上配置容器red12将接口绑定到逻辑交换机上。

检查最终状态

central,显示北向接口数据库总共两个接口ifred11、ifred12
在这里插入图片描述

central,南向接口数据库显示host43绑定接口ifred11,host44绑定接口ifred12
OVN实验----L2互通_第9张图片

测试

在red11 ping red12
docker exec -it red11 sh
ping 192.168.1.12
在这里插入图片描述
显示可以ping 通

物理网卡抓包,可以看到外层源目IP是HV的物理口IP,端口号UDP6081,内层源目IP是容器IP,vni 1,
在这里插入图片描述
后续再更新L3互通。

你可能感兴趣的:(实验,OVS,linux,网络,ovn,ovs)