SOME/IP
Service Discovery timing
The Initial Wait Phase, Repetition Phase and Main Phase of server and client, and every Sd timer that shapes them, on one page.
Server timers (SdServerTimer)
The SdServerTimer container of an SdServerService; the PRS constant each parameter sets is named in brackets.
| Parameter | Effect | Lesson |
|---|---|---|
SdServerTimerInitialOfferDelayMin / …Max | random wait of the Initial Wait Phase before the first OfferService (INITIAL_DELAY_MIN / INITIAL_DELAY_MAX) | 12 |
SdServerTimerInitialOfferRepetitionBaseDelay | first gap of the Repetition Phase; each gap doubles (REPETITIONS_BASE_DELAY) | 12 |
SdServerTimerInitialOfferRepetitionsMax | number of repeated OfferService entries; 0 skips the phase (REPETITIONS_MAX) | 12 |
SdServerTimerOfferCyclicDelay | period of the OfferService in the Main Phase; 0 = no cyclic OfferService (CYCLIC_OFFER_DELAY) | 12 |
SdServerTimerRequestResponseMinDelay / …Max | random wait before answering a multicast FindService (REQUEST_RESPONSE_DELAY) | 13 |
SdServerTimerTTL | TTL of each OfferService, in seconds; 0xFFFFFF = until the next reboot | 11 |
Client timers (SdClientTimer)
The SdClientTimer container of an SdClientService.
| Parameter | Effect | Lesson |
|---|---|---|
SdClientTimerInitialFindDelayMin / …Max | random wait of the Initial Wait Phase before the first FindService | 13 |
SdClientTimerInitialFindRepetitionsBaseDelay | first gap between FindService entries in the Repetition Phase; each gap doubles | 13 |
SdClientTimerInitialFindRepetitionsMax | number of repeated FindService entries | 13 |
SdClientTimerRequestResponseMinDelay / …Max | random wait before the SubscribeEventgroup in reply to a multicast OfferService | 13 |
SdClientTimerTTL | TTL of each FindService and SubscribeEventgroup | 14 |
SdSubscribeEventgroupRetryDelay / …RetryMax | Subscribe retry: SubscribeEventgroup again if neither SubscribeEventgroupAck nor SubscribeEventgroupNack arrived (needs SdSubscribeEventgroupRetryEnable in SdGeneral; 0xFF = retry forever) | 14 |
Reactions in each phase
| Input | Server | Client |
|---|---|---|
FindService received | Initial Wait Phase: ignored · Repetition Phase and Main Phase: OfferService (after the REQUEST_RESPONSE_DELAY if the FindService was multicast), repetition counter untouched | – |
| OfferService received | – | Not Requested: noted with its TTL · Initial Wait or Repetition Phase: no more FindService, on to the Main Phase · Main Phase: TTL renewed, SubscribeEventgroup for each requested consumed eventgroup |
StopOfferService received | – | client service and consumed eventgroups DOWN, socket connections closed, no FindService |
| TTL runs out | the subscription ends; the event handler is RELEASED if it was the last subscriber | client service DOWN, back to the Initial Wait Phase (FindService again) |
| BswM: server service DOWN, client service RELEASED | StopOfferService (unless in the Initial Wait Phase), all subscriptions dropped | StopSubscribeEventgroup, client service and consumed eventgroups DOWN |
IP address lost (ifstatus not up_and_configured) | Not Ready; event handlers RELEASED | Requested_but_not_ready if REQUESTED; client service and consumed eventgroups DOWN |
Source: Service Discovery, R20-11, sections 7.6, 7.7 and 10.2.7–10.2.8; SOME/IP-SD Protocol Specification, R20-11, section 4.1.4.