public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Bret Barkelew" <bret.barkelew@microsoft.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	LathaKannan Arumugam <larumugam@microsoft.com>,
	"'maciej.rabeda@linux.intel.com'" <maciej.rabeda@linux.intel.com>,
	Jiaxin Wu <jiaxin.wu@intel.com>, Siyuan Fu <siyuan.fu@intel.com>
Subject: NetworkPkg: Unexpected DHCP RELEASE after PXE server reply on IPv6
Date: Wed, 23 Jun 2021 21:08:23 +0000	[thread overview]
Message-ID: <MW4PR21MB1907FB682169CF0AD8656F34EF089@MW4PR21MB1907.namprd21.prod.outlook.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 1645 bytes --]

Hi all!

Trying to track down an unexpected behavior for one of our teams here:
“We tried to PXEBoot a VM using IPv6 and even though the server replied with all requested boot options, the firmware for some reason did a DHCPv6 release instead of going for a network boot.”

The team dug in with some debugging and tracked things down to this process and the associated code:

  1.  DHCP server is sending REPLY with valid boot params and tftp server address.
  2.  UEFI upon receiving this REPLY, it is trying to send UDP request with port 4011 and uses TFTP global address as destination address.
  3.  Ip6Output() in /NetworkPkg/Ip6Dxe/Ip6Output.c drops the UDP request generated in Step-2. This is due to route miss.
     *   Function: https://github.com/tianocore/edk2/blob/20ca52882877ba9025da2ee58c8dab7808eca457/NetworkPkg/Ip6Dxe/Ip6Output.c#L476
     *   Error return: https://github.com/tianocore/edk2/blob/20ca52882877ba9025da2ee58c8dab7808eca457/NetworkPkg/Ip6Dxe/Ip6Output.c#L701
  4.  As the UDP request with port 4011 failed, UEFI does a RELEASE message and errors out.
  5.  Below the code snippet inside UEFI where packet is getting dropped.

Here’s some questions from the team:

  1.  Why is UEFI doing UDP request with port 4011 to TFTP server address. We expect it to start TFTP with data provided in REPLY by server.
  2.  In data center, the blades are not directly connected to server. So how can UEFI learn the routes to send a unicast request using global address.
  3.  In case of IPv4, we don’t see any UDP request using port 4011. Why alone for IPv6?


Thoughts? Thanks in advance!

- Bret


[-- Attachment #2: Type: text/html, Size: 8077 bytes --]

             reply	other threads:[~2021-06-23 21:08 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-23 21:08 Bret Barkelew [this message]
2021-06-25  7:25 ` [edk2-devel] NetworkPkg: Unexpected DHCP RELEASE after PXE server reply on IPv6 brbarkel
2021-06-25 14:40   ` Maciej Rabeda
2021-06-25 16:19     ` [EXTERNAL] " Bret Barkelew
2021-06-25 16:22       ` larumugam
2021-06-25 20:11         ` LathaKannan Arumugam
     [not found]         ` <168BEC4CE79D1C8A.1293@groups.io>
2021-06-28 20:05           ` LathaKannan Arumugam
2021-06-29 16:36             ` Maciej Rabeda
     [not found]             ` <168D1AEBDC669830.32494@groups.io>
2021-06-29 16:39               ` Maciej Rabeda
2021-06-29 16:53                 ` Bret Barkelew
2021-06-29 17:33                   ` Vincent Zimmer
2021-06-29 18:54                     ` LathaKannan Arumugam
2021-06-30 21:44                       ` Bret Barkelew

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MW4PR21MB1907FB682169CF0AD8656F34EF089@MW4PR21MB1907.namprd21.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox