美文网首页
OVN系列7 -- 分布式DHCP

OVN系列7 -- 分布式DHCP

作者: 苏苏林 | 来源:发表于2022-02-03 11:40 被阅读0次

    DHCP是云网络的基础网络服务,为了提高性能和可用性,一般做成分布式DHCP,即各节点分别起DHCP服务且只为本节点的VM分配地址。但是一个VPC网络的IP地址池是全局资源,要是想完全做动态分配,一定需要一个集中式的管理。

    所以分布式的DHCP一般还是使用静态地址分配地址,DHCP本身变为了一个地址管理方式,而不是一个分配方式。

    如果vm中使用dhcp的方式申请地址,申请到的也是由控制器事先分配好的ip地址,由dhcp完成协议分配的流程而已。另有一篇介绍云网络使用dnsmasq实现分布式dhcp功能,点这里

    配置

    ### 配置sw子网
    ovn-nbctl set logical_switch sw-300 \
      other_config:subnet="30.1.1.0/24" \
      other_config:exclude_ips="30.1.1.1..30.1.1.99"
     
    ### 配置dhcp option 
    CIDR_UUID300=$(ovn-nbctl create dhcp_options \
      cidr=30.1.1.0/24 \
      options='"lease_time"="3600" "router"="30.1.1.1" "server_id"="30.1.1.1" "server_mac"="c0:ff:ee:00:30:01"')
     
    ### vm接口绑定 dhcp option
    ovn-nbctl lsp-add sw-300 sw-300-port-vm2
    ovn-nbctl lsp-set-addresses sw-300-port-vm2 "fa:10:dd:1b:30:01 dynamic"
    ovn-nbctl lsp-set-dhcpv4-options sw-300-port-vm2 $CIDR_UUID300
    

    查看vm nic已经分到了 30.1.1.101,和目前zstack的实现类似,在dhcp client申请地址之前已经完成地址分配,地址由控制器(ovn_controller)在接口绑定 dhcp option就做好了分配。如果要做的更精确,上面的 dhcp_options 配置可以配置32位演吗的主机地址。

    [root@172-26-201-95 ~]# ovn-nbctl list logical_switch_port sw-300-port-vm2
    _uuid               : 37c72600-a95e-4006-b105-a78f77bbf20d
    addresses           : ["fa:10:dd:1b:30:01 dynamic"]
    dhcpv4_options      : 8cc5ec26-7e77-4606-a4e2-00123a6ce675
    dhcpv6_options      : []
    dynamic_addresses   : "fa:10:dd:1b:30:01 30.1.1.101"
    enabled             : []
    external_ids        : {}
    ha_chassis_group    : []
    name                : sw-300-port-vm2
    options             : {}
    parent_name         : []
    port_security       : []
    tag                 : []
    tag_request         : []
    type                : ""
    up                  : false
    

    流表分析

    DHCP DHCPDISCOVER/REQUEST都会packet in到控制器,控制器回复OFFER和ACK,回送OVS,再由OVS修改三四层头发回VM。

    ### 1、dhcp REQUEST
     cookie=0x5d4c7169, duration=1226.116s, table=25, n_packets=0, n_bytes=0, priority=100,udp,reg14=0x2,metadata=0x2,dl_src=fa:10:dd:1b:30:01,nw_src=30.1.1.101,nw_dst=255.255.255.255,tp_src=68,tp_dst=67 actions=controller(userdata=00.00.00.02.00.00.00.00.00.01.de.10.00.00.00.63.1e.01.01.65.33.04.00.00.0e.10.01.04.ff.ff.ff.00.03.04.1e.01.01.01.36.04.1e.01.01.01,pause),resubmit(,26)
     cookie=0x5d4c7169, duration=1226.116s, table=25, n_packets=0, n_bytes=0, priority=100,udp,reg14=0x2,metadata=0x2,dl_src=fa:10:dd:1b:30:01,nw_src=30.1.1.101,nw_dst=30.1.1.1,tp_src=68,tp_dst=67 actions=controller(userdata=00.00.00.02.00.00.00.00.00.01.de.10.00.00.00.63.1e.01.01.65.33.04.00.00.0e.10.01.04.ff.ff.ff.00.03.04.1e.01.01.01.36.04.1e.01.01.01,pause),resubmit(,26)
     
    ### 2、dhcp DHCPDISCOVER报文匹配,送控制器处理,控制器做 put_dhcp_opts action,DHCP请求包转换为回复包(OFFER)
     cookie=0xe4d5f032, duration=1226.116s, table=25, n_packets=0, n_bytes=0, priority=100,udp,reg14=0x2,metadata=0x2,dl_src=fa:10:dd:1b:30:01,nw_src=0.0.0.0,nw_dst=255.255.255.255,tp_src=68,tp_dst=67 actions=controller(userdata=00.00.00.02.00.00.00.00.00.01.de.10.00.00.00.63.1e.01.01.65.33.04.00.00.0e.10.01.04.ff.ff.ff.00.03.04.1e.01.01.01.36.04.1e.01.01.01,pause),resubmit(,26)
     
    ### 3、所有回复包(OFFER、ACK)的三四层头修改
     cookie=0xa311c4bc, duration=1226.116s, table=26, n_packets=0, n_bytes=0, priority=100,udp,reg0=0x8/0x8,reg14=0x2,metadata=0x2,dl_src=fa:10:dd:1b:30:01,tp_src=68,tp_dst=67 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:c0:ff:ee:00:30:01,mod_nw_src:30.1.1.1,mod_tp_src:67,mod_tp_dst:68,move:NXM_NX_REG14[]->NXM_NX_REG15[],load:0x1->NXM_NX_REG10[0],resubmit(,37)
    

    相关文章

      网友评论

          本文标题:OVN系列7 -- 分布式DHCP

          本文链接:https://www.haomeiwen.com/subject/qosrkrtx.html