def METHOD_NAME(self, duthost, ctrl_links, upstream_links, profile_name, wait_mka_establish):
    '''Verify BGP neighbourship
    '''
    bgp_config = list(duthost.get_running_config_facts()[
        "BGP_NEIGHBOR"].values())[0]
    BGP_KEEPALIVE = int(bgp_config["keepalive"])
    BGP_HOLDTIME = int(bgp_config["holdtime"])
    BGP_TIMEOUT = 90
    def check_bgp_established(ctrl_port, up_link):
        command = ("sonic-db-cli {} STATE_DB HGETALL 'NEIGH_STATE_TABLE|{}'"
                   .format(getns_prefix(duthost, ctrl_port), up_link["local_ipv4_addr"]))
        fact = sonic_db_cli(duthost, command)
        logger.info("bgp state {}".format(fact))
        return fact["state"] == "Established"
    # Ensure the BGP sessions have been established
    for ctrl_port in list(ctrl_links.keys()):
        assert wait_until(BGP_TIMEOUT, 5, 0,
                          check_bgp_established, ctrl_port, upstream_links[ctrl_port])
    # Check the BGP sessions are present after port macsec disabled
    for ctrl_port, nbr in list(ctrl_links.items()):
        disable_macsec_port(duthost, ctrl_port)
        disable_macsec_port(nbr["host"], nbr["port"])
        wait_until(BGP_TIMEOUT, 3, 0,
                   lambda: not duthost.iface_macsec_ok(ctrl_port) and
                   not nbr["host"].iface_macsec_ok(nbr["port"]))
        # BGP session should keep established even after holdtime
        assert wait_until(BGP_TIMEOUT, BGP_KEEPALIVE, BGP_HOLDTIME,
                          check_bgp_established, ctrl_port, upstream_links[ctrl_port])
    # Check the BGP sessions are present after port macsec enabled
    for ctrl_port, nbr in list(ctrl_links.items()):
        enable_macsec_port(duthost, ctrl_port, profile_name)
        enable_macsec_port(nbr["host"], nbr["port"], profile_name)
        wait_until(BGP_TIMEOUT, 3, 0,
                   lambda: duthost.iface_macsec_ok(ctrl_port) and
                   nbr["host"].iface_macsec_ok(nbr["port"]))
        # Wait PortChannel up, which might flap if having one port member
        wait_until(BGP_TIMEOUT, 5, 5, lambda: find_portchannel_from_member(
            ctrl_port, get_portchannel(duthost))["status"] == "Up")
        # BGP session should keep established even after holdtime
        assert wait_until(BGP_TIMEOUT, BGP_KEEPALIVE, BGP_HOLDTIME,
                          check_bgp_established, ctrl_port, upstream_links[ctrl_port])