Я много работал с gamekit и gksession. Я всегда использую режим Peer2Peer, хотя некоторые люди не одобряют его. Я никогда не испытываю задержек, подобных той, которую вы описываете.
Отправляете ли вы с GKSendDataReliable или GKSendDataUnreliable? Попробуйте переключиться на другое и посмотрите, изменит ли это что-нибудь. Если вы используете GKSendDataReliable, то отправляющее устройство будет ожидать сообщения «Получено» от получателя, прежде чем отправлять следующее сообщение. Это может быть проблемой.
На ваших тестовых устройствах: работает ли что-нибудь, что может затопить сеть?
Я тестировал многопользовательскую игру на основе игрового комплекта, и если бы у меня было несколько активных устройств, то внезапно некоторые зависали бы полностью, и мне нужно было их сильно перезагрузить (полностью отключить и перезагрузить), чтобы они снова заработали.
Если у вас продолжаются проблемы, вы можете попробовать гораздо более низкий уровень API: dns-sd https://developer.apple.com/library/mac/#documentation/Networking/Conceptual/dns_discovery_api/Introduction.html
Надеюсь, у вас получится, удачи!