-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adds a Docker file for AF and AS and a docker-compose.yml #13
base: development
Are you sure you want to change the base?
Conversation
…the two containers
Note: This is still a draft and untested. The work on this will continue once I have better internet again to check the build :) |
DescriptionThis PR adds two In addition, the endpoints for The required configuration files for AF and AS are also included and copied from the host machine into the container for usage. Problem DescriptionRight now I am facing a problem which leads to the AF not being able to talk to the AS via the M3 interface. According to the Docker documentation a single network is setup by default. This should enable the AF to talk to the AS via the M3 interface using a URL like When defining a provisioning session and a content hosting configuration, I run into an issue that the AF is not able to talk to the AS:
We can overcome this by exposing the port In my tests I used the following payload to create a provisioning session and a content hosting configuration: Provisioning Session{
"aspId": "aspId",
"appId": "appId",
"provisioningSessionType": "DOWNLINK"
} Content Hosting Configuration{
"name": "BBC R&D Demo Streams",
"ingestConfiguration": {
"pull": true,
"protocol": "urn:3gpp:5gms:content-protocol:http-pull-ingest",
"baseURL": "https://rdmedia.bbc.co.uk/"
},
"distributionConfigurations": [
{
"domainNameAlias": "192.168.178.56:8080",
"entryPoint": {
"relativePath": "bbb/2/client_manifest-common_init.mpd",
"contentType": "application/dash+xml",
"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
}
},
{
"domainNameAlias": "192.168.178.56:8080",
"entryPoint": {
"relativePath": "elephants_dream/1/client_manifest-all.mpd",
"contentType": "application/dash+xml",
"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
}
}
]
} Questions to clarify
|
@davidjwbbc @devbbc @rjb1000 @jordijoangimenez : Fyi, see my comment above. Would be great to check this on Friday. |
Getting a 404 when requesting the MPD from the Service Access Information. The config now is as follows: AF Config msaf:
open5gsIntegration: false
sbi:
- addr: 127.0.0.22
port: 7777
m1:
- addr: 0.0.0.0
port: 5555
m5:
- addr: 0.0.0.0
port: 7778
maf:
- addr: 127.0.0.25
port: 7777
applicationServers:
- canonicalHostname: localhost
urlPathPrefixFormat: /m4d/provisioning-session-{provisioningSessionId}/
m3Port: 7777
m3Host: application-server AS Configm3_listen = 0.0.0.0
m3_port = 7777
http_port = 80 Docker Composeservices:
application-server:
build:
context: ./
dockerfile: Dockerfile-Application-Server
ports:
- "8080:80"
volumes:
- ./application-server.conf:/etc/5gmag/as/conf/application-server.conf
application-function:
build:
context: ./
dockerfile: Dockerfile-Application-Function
ports:
- "5555:5555"
- "7778:7778"
- "4444:4444"
volumes:
- ./msaf.yaml:/etc/open5gs/alternate-msaf.yaml Content Hosting Configuration Payload{
"name": "BBC R&D Demo Streams",
"ingestConfiguration": {
"pull": true,
"protocol": "urn:3gpp:5gms:content-protocol:http-pull-ingest",
"baseURL": "https://rdmedia.bbc.co.uk/"
},
"distributionConfigurations": [
{
"domainNameAlias": "10.147.67.219:8080",
"entryPoint": {
"relativePath": "bbb/2/client_manifest-common_init.mpd",
"contentType": "application/dash+xml",
"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
}
},
{
"entryPoint": {
"relativePath": "elephants_dream/1/client_manifest-all.mpd",
"contentType": "application/dash+xml",
"profiles": ["urn:mpeg:dash:profile:isoff-live:2011"]
}
}
]
} Service Access Information{
"provisioningSessionId": "fac35dde-ad93-41ef-bc8c-955d3fdd115f",
"provisioningSessionType": "DOWNLINK",
"streamingAccess": {
"entryPoints": [
{
"locator": "http://10.147.67.219:8080/m4d/provisioning-session-fac35dde-ad93-41ef-bc8c-955d3fdd115f/bbb/2/client_manifest-common_init.mpd",
"contentType": "application/dash+xml",
"profiles": [
"urn:mpeg:dash:profile:isoff-live:2011"
]
},
{
"locator": "http://localhost:8080/m4d/provisioning-session-fac35dde-ad93-41ef-bc8c-955d3fdd115f/elephants_dream/1/client_manifest-all.mpd",
"contentType": "application/dash+xml",
"profiles": [
"urn:mpeg:dash:profile:isoff-live:2011"
]
}
]
}
} AS logs - Creating Content Hosting Configuration
tail -f /var/log/rt-5gms/application-server-access.log
|
A couple of things wrong here. A ContentHostingConfiguration is for different entry points for one piece of media or for general distribution schemes for entry points passed via M8. So you shouldn't be using one ContentHostingConfiguration to provide links for two completely different bits of media. These should be split into two separate provisioning sessions, each with a ContentHostingConfiguration for one of the bits of media, i.e. Elephants Dream in one provisioning session and Big Buck Bunny in another. The I don't think that's why you're getting the 404, but it certainly won't help. |
I think your AS configuration is missing the It might be worth looking in the error log file (if present) at You may also want to check that:
...is a sensible value for a Docker container (where is the DNS resolver within docker?). For info the full default AS configuration looks like:
|
Thanks @davidjwbbc these were the right pointers. I now get an MPD response from the AS with the changes in 28620de I needed to change I will clean this up and then do the PR. We can discuss the changes tomorrow in the call. |
For discussion tomorrow as well: The Elephants Dream origin MPD has an absolute
That causes the player to fetch segments directly from the origin without going through the AS. |
Adds a Docker file for AF and AS and a docker-compose.yml to connect the two containers. This addresses 5G-MAG/rt-5gms-application-function#168 and 5G-MAG/rt-5gms-application-server#94.
The idea is to have one Docker file per repository and launch both containers via Docker compose. That way they can communicate internally with each other, allowing configuration of the AF via
M1
and configuration of the AS by the AF viaM3
. The required ports are exposed to the host machine.