OVN

OVN路由器对等连接

公有云网络中通过VPC来实现网络的隔离,VPC可以对应到OVN虚拟网络逻辑路由器,那么如何来实现两个路由器下子网通过路由方式直接访问呢?下面我来一起看看OVN如何配置的。 添加一个新的路由器和交换机 sudo ovn-nbctl create Logical_Router name=router2 options:chassis=6fa2da75-1393-4efe-984d-0c0310b95ad3 fecc0e10-0e9e-440e-aaac-5bb667bb2991 sudo ovn-nbctl ls-add lswitch3 连接路由器与交换机 # 路由器上添加一个端口 sudo ovn-nbctl lrp-add router2 lr2-ls3 52:54:00:c1:68:90 10.2.0.1/24 # 交换机上添加一个端口,类型为router,与路由器端口关联 sudo ovn-nbctl lsp-add lswitch3 ls3-lr2 sudo ovn-nbctl lsp-set-type ls3-lr2 router sudo ovn-nbctl lsp-set-addresses ls3-lr2 52:54:00:c1:68:90 sudo ovn-nbctl lsp-set-options ls3-lr2 router-port=lr2-ls3 在节点上添加一个ovs internal port # 交换机添加一个端口 sudo ovn-nbctl lsp-add lswitch3 ls3-vm2 sudo ovn-nbctl lsp-set-addresses ls3-vm2 "02:ac:10:ff:01:37 10.2.0.70" sudo ovn-nbctl lsp-set-port-security ls3-vm2 "02:ac:10:ff:01:37 10.2.0.70" # 主机上添加vm2接口,与交换机连接 sudo ifconfig br-int up sudo ovs-vsctl add-port br-int vm2 -- set interface vm2 type=internal sudo ip netns add vm2 sudo ip link set vm2 netns vm2 sudo ip netns exec vm2 ip link set lo up sudo ip netns exec vm2 ip link set vm2 up sudo ip netns exec vm2 ip link set vm2 address 02:ac:10:ff:01:37 sudo ip netns exec vm2 ip addr add 10.

继续阅读

容器如何使用虚拟化网络

前面文章介绍了Kube-OVN基于OVS/OVN将网络虚拟化带入云原生领域。下面我们通过下面的实验场景来看一下容器如何使用虚拟化网络的,从而了解Kube-OVN的基本工作原理。 实验环境 实验使用的是两台虚拟机:ovn-1为控制节点和计算节点,IP地址为:192.168.0.115。ovn-2为计算节点,IP地址为:192.168.0.114。 实验场景 1,两个主机上进入网络命名空间,配置不同网段进行通信 2,Docker运行容器,通过OVS internal port进行通信 3,Docker运行容器,通过veth pair进行通信 安装部署 #控制节点和计算节点 sudo apt install net-tools sudo apt-get install python-six openssl -y sudo apt-get install openvswitch-switch openvswitch-common -y sudo systemctl disable apparmor #控制节点 sudo apt-get install ovn-central ovn-common ovn-host -y #计算节点 sudo apt-get install ovn-host ovn-common -y 配置ovn 设置ovn数据库允许tcp进行连接,默认只允许socket本地访问。 #控制节点 sudo ovn-nbctl set-connection ptcp:6641:0.0.0.0 -- set connection . inactivity_probe=60000 sudo ovn-sbctl set-connection ptcp:6642:0.0.0.0 -- set connection . inactivity_probe=60000 sudo ovs-appctl -t ovsdb-server ovsdb-server/add-remote ptcp:6640:192.

继续阅读

Kube-OVN如何实现Pod和主机网络连通

下面从Kube-OVN代码看一下如何实现Pod和主机网络连通的,再在实验环境中按照Kube-OVN方式进行实验。 | Kube-OVN初始化ovn0 Kube-OVN在主机上添加一个OVS的internal port:ovn0,实现主机和OVS网络的通信。 1,将ovn0连接到OVS集成网桥br-int,类型为internal port,与交换机端口关联。 2,配置ovn0的MAC, IP, MTU并启动接口。 // InitNodeGateway init ovn0 func InitNodeGateway(config *Configuration) error { ... return configureNodeNic(portName, ipAddr, gw, mac, config.MTU) } func configureNodeNic(portName, ip, gw string, macAddr net.HardwareAddr, mtu int) error { ipStr := util.GetIpWithoutMask(ip) raw, err := ovs.Exec(ovs.MayExist, "add-port", "br-int", util.NodeNic, "--", "set", "interface", util.NodeNic, "type=internal", "--", "set", "interface", util.NodeNic, fmt.Sprintf("external_ids:iface-id=%s", portName), fmt.Sprintf("external_ids:ip=%s", ipStr)) if err != nil { klog.Errorf("failed to configure node nic %s: %v, %q", portName, err, raw) return fmt.

继续阅读

OVN虚拟网络出网网关配置

SuKai in OVN

前一篇文章介绍了,OVN虚拟网络访问主机网络的方式,下面一起看一下Kube-OVN如何配置OVN虚拟网络访问外部网络的。 访问主机网络 1,每台主机上配置ovn0接口,通过internal port方式与虚拟网络连接。 2,主机上配置路由条目,将虚拟网段路由指向join子网网关地址,使主机能够路由到虚拟网络。 3,OVN路由器上配置默认路由到join子网网关地址,并配置策略路由条目:目标为主机地址到主机的ovn0接口重路由,使虚拟网络能够到主机网络。 # 策略路由方式, kube-ovn采用的是策略路由 sudo ovn-nbctl lr-policy-add router 30000 "ip4.dst == 192.168.10.89" reroute 100.64.0.3 sudo ovn-nbctl lr-policy-add router 30000 "ip4.dst == 192.168.10.40" reroute 100.64.0.2 # 静态路由方式 sudo ovn-nbctl lr-route-add router 192.168.10.89 100.64.0.3 sudo ovn-nbctl lr-route-add router 192.168.10.40 100.64.0.2 # 主机IP 192.168.10.89 ovn0接口IP 100.64.0.3 # 主机IP 192.168.10.40 ovn0接口IP 100.64.0.2 访问外部网络 有两种出网方式,分布式出网网关和集中式出网网关 1,配置路由策略,来源于虚拟网络子网网段到下一跳进行重路由,这里下一跳是主机的join子网ovn0地址。如果是分布式的可以根据不同的源地址指定到不同主机上,如果是集中式的,全部到某一台主机上路由出网。 2,网络地址转换MASQUERADE,当虚拟网络子网的数据包从主机网卡上访问外网时,源地址伪装为主机地址。 sudo ovn-nbctl lr-policy-add router 29000 "ip4.src == 10.0.0.0/24" reroute 100.64.0.2 sudo ovn-nbctl lr-policy-add router 29000 "ip4.

继续阅读