Skip to content

Instantly share code, notes, and snippets.

@ben221199
Last active May 17, 2026 20:59
Show Gist options
  • Select an option

  • Save ben221199/0018d172a83433dfc72985f61322a0bf to your computer and use it in GitHub Desktop.

Select an option

Save ben221199/0018d172a83433dfc72985f61322a0bf to your computer and use it in GitHub Desktop.
OIPF

HNI-IGI (Home Network Interface <=> Application Gateway Interface)

The interface over which the AG communicates with the IG.

Discover the IG

Likely the same as in HNI-IGI.

HNI-IGI (Home Network Interface <=> IMS Gateway Interface)

The interface over which the OITF communicates with the IG.

Discover the IG

1. UPnP

First, the OITF discovers the IG using UPnP:

Request:

M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 5
ST: urn:oipf-org:device:ig:1

Response:

HTTP/1.1 200 OK
LOCATION: http://IGAddress/Description.xml
ST: urn:oipf-org:device:ig:1

2. Description file

The previous step gave a description URL for the IG. Now, this file is read:

Request:

GET http://IGAddress/Description.xml

Response:

<ig:igDescription xmlns:ig="urn:oipf-org:device:ig:1" SupportedMethod="01ff">
  <ig:igURL>
    http://192.168.0.2/IG/
  </ig:igURL>
</ig:igDescription>

(<igDescription/> may be the root element, or embedded in another element.)

Connect to the IG

For the REGISTER command, the OITF uses the request URI of the P-CSCF it requested/received using DHCP option 120 in the X-OITF-Request-Line header field.

The URI is in the form of <IG URI>/<HNI-IGI message type>, where the message type is one of the following:

HNI-IGI Message Type
AUX
PENDING_IG
SIP

AUX

Request:

POST <IG URI>/AUX HTTP/1.1
X-HNI-IGI-Request: ...
X-HNI-IGI-Message-ID: ...
X-HNI-IGI-Call-ID: ...
X-HNI-IGI-From: ...
X-HNI-IGI-To: ...
X-HNI-IGI-OITF-DeviceID: ...

Response:

HTTP/1.1 200 OK
X-HNI-IGI-Response: ...
X-HNI-IGI-Message-ID: ...
X-HNI-IGI-From: ...
X-HNI-IGI-To: ...

Pending IG

A long-running endpoint that only sends a response when the IG has message available (e.g. SIP NOTIFY).

SIP

Request:

POST <IG URI>/SIP HTTP/1.1
X-OITF-Request-Line: REGISTER <Request URI> SIP/2.0
X-OITF-From: ...
X-OITF-To: ...
X-OITF-Contact: ...
X-OITF-Call-ID: ...
X-OITF-CSeq: ...

Response:

HTTP/1.1 200 OK
X-OITF-Response-Line: SIP/2.0 <response>
X-OITF-From: ...
X-OITF-To: ...
X-OITF-Expires: ...
X-OITF-Contact: ...
X-OITF-Call-ID: ...
X-OITF-CSeq: ...

OITF Start Up

When the OITF (the actual end device) starts up, it does some things in the network.

Steps

  1. OITF powers on

  2. OITF tries to find IG in the local network using UPnP with search target urn:oipf-org:device:ig:1. If no IG, skip to step 7.

  3. OITF sends OITF-Restart (HNI-IGI message) to the IG.

  4. OITF sends Fetch_UserIDs (HNI-IGI message) to IG to get all IMPUs (subscription identities).

  5. OITF registers the user identity with the IG (SIP REGISTER message).

  6. OITF sends GBA-Authentication (HNI-IGI message) to the IG if the IG supports it (told when doing UPnP) to do authentication.

  7. OITF does Service Provider Discover and then Service Discovery.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment