Hello, Please find answers below.
> Is the use of bgscan mandatory? Is it standardized by IEEE? I want to emulate real-world handover without external tools. If I don't use bgscan, how will it affect the handover process?
AFAIK, all the Linux systems use bgscan and this includes mobile OSes (e.g. android).
> Does my configuration ensure the handover is processed using FT 802.11r? How can I verify this? The handover works as observed. Is my approach with the Mininet script and wpa_supplicant acceptable, even without specifying encryption for the client in the Mininet script?
You can use wireless tools such as wpa_cli.
> For mobility, I want to move the station from AP1 to AP2 to AP3 and then back from AP3 to AP2 to AP1. Is there a way to customize the mobility with a custom trajectory?
Yes. Please don't ask me how. :) There are sample files at /examples that may help you.
> Does net.addLink(ap2, ap1) add a wireless link or a wired link between the two access points?
> Lastly, do you have any idea please how to perform over-the-DS or over-the-air handover with 802.11r?
If you use bgscan and you have 802.11r you have everything you need to perform over-the-DS