DHCP

why can't turn dhcp discovery and request message into unicast ?

As we know, The DHCP operation begins with clients broadcasting a request, then DHCP server send a DHCP offer message to the client. In response to the DHCP offer,the client replies with a DHCP request to request the offered address. DHCP Discovery message and DHCP request message are both broadcast. In some scenarios, we want to broadcast messages as little as possible, Why can't turn DHCP discovery and request message into unicast before the broadcast outflow from host? Maybe we add some flow entries in OVS bridge to modify mac_address of DHCP broadcast, the premise is L2 agent to be able to get mac_address of dhcp port. I add some flow entries for br-eth1 bridge which modify broadcast into unicast, it works, and vm successfully request IP addresses automatically.

[root@compute1 ~]# ovs-ofctl dump-flows br-eth1    #####this is my flow entries, mac_address of dhcp port is fa:16:3e:c0:4e:ea#####

NXST_FLOW reply (xid=0x4):

cookie=0x0, duration=263106.173s, table=0, n_packets=0, n_bytes=0, idle_age=65534, hard_age=65534, priority=9,ip,in_port=2,dl_dst=ff:ff:ff:ff:ff:ff,nw_src=0.0.0.0,nw_dst=255.255.255.255 actions=resubmit(,26)

cookie=0x0, duration=263106.155s, table=26, n_packets=0, n_bytes=0, idle_age=65534, hard_age=65534, priority=2,dl_vlan=13,dl_src=fa:16:3e:5f:2f:7b actions=mod_vlan_vid:333,mod_dl_dst:fa:16:3e:c0:4e:ea,NORMAL

cookie=0x0, duration=263107.295s, table=26, n_packets=0, n_bytes=0, idle_age=65534, hard_age=65534, priority=0 actions=drop

I also develop some codes for neutron which can get mac_address of dhcp_port and add flow entries for ovs bridge.



For compatibility issues with multiple agents per network for HA, I have a way to solve it. For example, when there are two dhcp-agents per network, I add two tables to modify mac_address for DHCP broadcast, in table 26 ,it turn the dest mac_address into one dhcp_port mac_address and normal , and at the same time the message will be resubmitted into table 27. In table 27, it turn the dest mac_address into the other dhcp_port mac_address add then normal. At last, both of dhcp-agents will receive the DHCP request. 

Below are flow entries as example:

[root@compute1 ~]# ovs-ofctl dump-flows br-eth1

NXST_FLOW reply (xid=0x4):

cookie=0x0, duration=263106.173s, table=0, n_packets=0, n_bytes=0, idle_age=65534, hard_age=65534, priority=9,ip,in_port=2,dl_dst=ff:ff:ff:ff:ff:ff,nw_src=0.0.0.0,nw_dst=255.255.255.255 actions=resubmit(,26)

cookie=0x0, duration=44.624s, table=26, n_packets=2, n_bytes=0, idle_age=44, priority=2,in_port=2,dl_vlan=1,dl_src=fa:16:3e:e4:d5:4e actions=mod_dl_dst:fa:16:3e:2b:3a:eb,mod_vlan_vid:333,NORMAL,resubmit(,27)

cookie=0x0, duration=263107.295s, table=26, n_packets=0, n_bytes=0, idle_age=65534, hard_age=65534, priority=0 actions=drop

cookie=0x0, duration=263106.155s, table=27, n_packets=2, n_bytes=0, idle_age=65534, hard_age=65534, priority=2,dl_vlan=1,dl_src=fa:16:3e:e4:d5:4e actions=mod_vlan_vid:333,mod_dl_dst:fa:16:3e:c0:4e:ea,NORMAL

cookie=0x0, duration=263107.295s, table=27, n_packets=0, n_bytes=0, idle_age=65534, hard_age=65534, priority=0 actions=drop

https://bugs.launchpad.net/neutron/+bug/1584568

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NAME dnsmasq - A lightweight DHCP and caching DNS server....
    ximitc阅读 2,938评论 0 0
  • 不知道看官大人是否有过这样的疑惑?一台计算机,插上网线是不是就可以直接上网了呢?其实没有这么简单,需要配置本机IP...
    采风JS阅读 4,824评论 2 56
  • DHCP工作原理 DHCP 使用客户端/服务器模型。网络管理员建立一个或多个维护 TCP/IP 配置信息并将其提供...
    语文小子阅读 1,448评论 1 4
  • 0×1.DHCP工作过程DHCP工作流程如下: DHCP客户端(PC1)被配置成自动获取IP,R1上面配置了DHC...
    Zero___阅读 1,020评论 0 2
  • 通讯的4个步骤 (1) Client:dhcp discover(2) Server: dhcp offer(IP...
    uangianlap阅读 596评论 0 2