Auteur Sujet: Tester le fonctionnement de l'API Arcep de caractérisation des tests de débit  (Lu 7479 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
L'Arcep a demandé aux opérateurs de mettre en place une API pour mieux caractériser l'environnement des tests de débit



L’API est accessible à des outils de mesure en crowdsourcing, pour le moment uniquement https://www.nperf.com/, utilisés par les usagers pour évaluer le débit ou, plus généralement, la qualité de service de leurs accès à internet. Sollicitée uniquement lorsque l’utilisateur initie un test de débit, et sous son contrôle, l’API renseigne l’outil de mesure sur une série d’indicateurs techniques, tels que le type de box, la technologie d’accès à internet, les débits montants ou descendants contractuels.

Les modalités de fonctionnement de l’API prennent pleinement en compte les questions de respect et de protection de la vie privée des utilisateurs. D’abord, les données recueillies par l’API ne sont évidemment pas transmises à l’Arcep. Ensuite, aucune donnée liée à l’identification de l’utilisateur (identifiant, nom, localisation, etc.) n’est transmise par l’API aux outils de mesure. Enfin, l’API n’est sollicitée que lors d’un test de débit initié par l’utilisateur lui-même et ne répond pas aux sollicitations depuis internet.

Questionnée dans le cadre de cette démarche, la CNIL a pu s’assurer que le dispositif répondait dans son principe aux exigences en matière de protection des données personnelles tout en insistant sur l’importance du rôle de conseil de l’Arcep, notamment au travers du « Code de conduite de la qualité de service internet », vis-à-vis des outils de mesure exploitant l’API.

Comment fonctionne l’API ?

Le schéma ci-dessus décrit le fonctionnement de l’API lorsqu’un client initie un test de QoS avec un outil de test ayant accès à l’API. Deux appels à l’API sont réalisés : le premier juste avant le test de débit et le second juste après. Ces appels permettent de récupérer les différents indicateurs pour caractériser le lien entre le terminal de l’utilisateur et internet tout en s’assurant qu’il n’y a pas eu de cross-trafic, c’est-à-dire un trafic autre que celui mesuré (trafic d’un autre PC ou smartphone, box TV ou trafic lié à un autre programme sur le PC de test). Pour ce faire, l’outil de mesure va comparer la quantité de données qu’il a envoyée et reçue sur internet à la quantité de données qui a été transmise sur internet par la box entre le premier et le second appel de l’API.





L’API est-elle accessible depuis internet ?

Non, l’API est accessible uniquement depuis le réseau local de l’utilisateur final. L’appel de l’API doit être réalisé sur les serveurs du fournisseur d’accès à internet depuis l’adresse IP du client. Les requêtes provenant d’autres adresses IP sont rejetées afin de sécuriser le dispositif. C’est donc uniquement l’outil de test exécuté sur le terminal du client qui peut appeler l’API. De plus, un système de restriction d’accès est mis en place, afin que seuls les outils autorisés puissent accéder à l’API.

vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Les résultats de nPerf ne sont pas encore enrichis grâce à l’API, mais vous pouvez déjà visualiser les données remontées par l'API dans votre navigateur, via la touche F12.

1/ Dans votre navigateur web, il faut ouvrir "les outils de développement" accessible via la touche F12 ou Ctrl + MAj + I.
- Firefox : Menu ➤ Outils supplémentaires ➤ Outils de développement web ;
- Chrome : Menu ➤ Plus d'outils ➤ Outils de développement ;
- Microsoft Edge : Menu ➤ Outils supplémentaires ➤ Outils de développement web ;
- Safari : Safari ➤ Préférences ➤ Avancé et cocher l'option Afficher le menu de développement puis Développement ➤ Afficher l'inspecteur web.

2/ Cliquer sur l'onglet "Réseau" pour démarrer l'enregistrement des requêtes.

3/ Aller sur https://www.nperf.com/ et lancer un test (c'est sur l'onglet nPerf que l'onglet "Réseau" doit être ouvert).

4/ Filtrer les URL pour obtenir uniquement les requêtes de l'API : rentrer api (Orange/Free/SFR) ou qos (Bouygues) de façon à n'avoir que des lignes :
- Bouygues Telecom : qos.bouygtel.fr:39443
- Orange :  api-infoacces.orange.fr
- Free :  api-arcep.proxad.net
- SFR : apibox.sfr.net

5/ Cliquer sur la réponse à une requête API puis sur l'onglet "Réponse"

Exemple avec une carte Wi-Fi 802.11g (le PC de mon fils) :


vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Exemple avec un PC connecté en Ethernet 100 Mb/s :


vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Voici plus d'information sur les données que peut remonter l'API (tout n'est pas obligatoire) :

"gateway" => "model": "NB6VAC"
description: Nom de l'IAD ("box") du client - élément facultatif, certains FAI le renseignement, d'autre non.
type: string

"gateway" => "softwareVersion": "R4.0.45d.0"
description: Version du logiciel de l'IAD - élément facultatif, certains FAI le renseignement, d'autre non.
type: string



Section SubscriptionSpeed pour le débit contractuel

"subscriptionSpeed" => "downloadMin": 0
description: Débit minimum descendant contractuel (Kb/s) - élément présent lorsque défini et existant.
type: integer
format: int64
minimum: 0

"subscriptionSpeed" => "uploadMin": 0
description: Débit minimum montant contractuel (Kb/s) - élément présent lorsque défini et existant.
type: integer
format: int64
minimum: 0

"subscriptionSpeed" => "downloadMax": 0
description: Débit maximum descendant contractuel (Kb/s)
type: integer
format: int64
minimum: 0

"subscriptionSpeed" => "uploadMax": 0
description: Débit maximum montant contractuel (Kb/s)
type: integer
format: int64
minimum: 0

"subscriptionSpeed" => "downloadNormally": 0
description: Débit "normalement disponible" descendant contractuel (Kb/s) - élément présent lorsque défini et existant.
type: integer
format: int64
minimum: 0

"subscriptionSpeed" => "uploadNormally": 0
description: Débit "normalement disponible" montant contractuel (Kb/s) - élément présent lorsque défini et existant.
type: integer
format: int64
minimum: 0

vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Section WAN

"wan" => "technology": "ftth"
description: Technologie WAN utilisée par l'IAD ("box")
type: string
enum: [ftth, adsl, vdsl, gfast, cable, satellite, 2g, 3g, 4g, 5g, other]

"wan" => "mode": "IntegratedNT"
description: Indique si la terminaison WAN opérateur est intégrée à l'IAD (IntegratedNT - exemple ADSL, VDSL, FTTH avec ONT intégré) ou non (ExternalNT - exemple FTTH avec boitier ONT sans accessoire de connectivité détecté). Si détection d'un accessoire de connectivité entre IAD et ExternalNT (notion de WAN complexe), la valeur de ce champ sera "Complex".
type: string
enum: [IntegratedNT, ExternalNT, Complex]

"wan" => "aggregation": "no"
description: Technologie WAN secondaire active ('no' = absence d'agrégation ou agrégation non activée)
type: string
enum: [no, ftth, adsl, vdsl, gfast, cable, satellite, 2g, 3g, 4g, 5g, other]

vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Section WAN - SpeedNT

"wan" => "speedNT" => "download": 1000000
description: Débit descendant Ethernet entre le boîtier de terminaison réseau et IAD (Kb/s) - élément présent lorsque présence d'un boîtier de terminaison réseau externe.
type: integer

"wan" => "speedNT" => "upload": 1000000
description: Débit montant Ethernet entre le boîtier de terminaison réseau et l'IAD (Kb/s) - élément présent lorsque présence d'un boîtier de terminaison réseau externe.
type: integer
format: int64
minimum: 0

"wan" => "speedNT" => "downloadEstimated": 1000000
description: Estimation du débit descendant utile du segment limitant, en cas de détection d’un accessoire de connectivité entre le boîtier de terminaison réseau et l'IAD (Kb/s) - élément présent lorsque "Wan Mode = Complex".
type: integer
format: int64
minimum: 0

"wan" => "speedNT" => "uploadEstimated": 1000000
description: Estimation du débit montant utile du segment limitant, en cas de détection d’un accessoire de connectivité entre le boîtier de terminaison réseau et l'IAD (Kb/s) - élément présent lorsque "Wan Mode = Complex".
type: integer
format: int64
minimum: 0

"wan" => "speedNT" => "duplex": "full"
description: Mode Ethernet entre le boitier de terminaison réseau (NT) et l'IAD - élément présent lorsque présence d'un boîtier de terminaison réseau externe.
type: string
enum: [half, full]

vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Section WAN - Syncronisation xDSL

"wan" => "speedSynchro" => "download": 10000
description: xDSL uniquement => débit de synchronisation descendant (Kb/s) - élément présent lorsque la technologie WAN est xDSL
type: integer
format: int64
minimum: 0

"wan" => "speedSynchro" => "upload": 1000
description: xDSL uniquement => débit de synchronisation montant (Kb/s) - élément présent lorsque la technologie WAN est xDSL
type: integer
format: int64
minimum: 0

vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Section WAN - ByteCounter pour le cross-traffic

"wan" => "byteCounter" => "download": 2021748595
description: Relevé du compteur de trafic descendant (internet => IAD) du port WAN (octets).
type: integer
format: int64
minimum: 0

"wan" => "byteCounter" => "upload": 4292080939
description: Relevé du compteur de trafic montant (IAD => internet) du port WAN (octets).
type: integer
format: int64
minimum: 0

vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Section LAN

"lan" => "connectionType": "ethernet"
description: Représente la technologie de l’interface de l’IAD par laquelle arrive la requête d'API émise par le terminal (note - La détection du CPL sur le LAN est facultative).
type: string
enum: [wifi, ethernet, cpl, other]

"lan" => "complexity": "Undefined"
description: Niveau de complexité de la topologie LAN. Le terminal requêtant l'API est détecté comme connecté directement à l'IAD (= Direct), derrière un ou plusieurs accessoires de connectivité avec connaissance par l'IAD des éléments constitutifs (= Complex) ou sans connaissance (= Undefined)
type: string
enum: [Direct, Complex, Undefined]



Section LAN - SpeedLAN

"lan" => "speedLan" => "downloadMax": 1000000
description: Débit maximal théorique de l’interface. Ethernet/CPL - capacité du port Ethernet coté box d’où provient la requête de l’API. Wi-Fi - débit maximum théorique proposé par le Wi-Fi de l’AP de l'IAD d’où provient la requête de l’API (Kb/s) - élément présent lorsque "Lan complexity = Direct" ou "Lan complexity = Complex".
type: integer
format: int64
minimum: 0

"lan" => "speedLan" => "uploadMax": 1000000
description: Débit maximal théorique de l’interface. Ethernet/CPL - capacité du port Ethernet coté box d’où provient la requête de l’API. Wi-Fi - débit maximum théorique proposé par le Wi-Fi de l’AP de l'IAD d’où provient la requête de l’API (Kb/s) - élément présent lorsque "Lan complexity = Direct" ou "Lan complexity = Complex".
type: integer
format: int64
minimum: 0

"lan" => "speedLan" => "download": 0
description: Estimation du débit utile descendant sur le LAN (Ethernet / Wi-Fi / CPL) du segment limitant du lien IAD-Terminal requêtant l'API. Wi-Fi - le débit wifi remonté est calculé selon une formule commune, partagée par tous (Kb/s) - élément présent lorsque "Lan complexity = Direct" ou "Lan complexity = Complex".
type: integer
format: int64
minimum: 0

"lan" => "speedLan" => "upload": 0
description: Estimation du débit utile montant sur le LAN (Ethernet / Wi-Fi / CPL) du segment limitant du lien IAD-Terminal requêtant l'API. Wi-Fi - le débit wifi remonté est calculé selon une formule commune, partagée par tous (Kb/s) - élément présent lorsque "Lan complexity = Direct" ou "Lan complexity = Complex".
type: integer
format: int64
minimum: 0

"lan" => "speedLan" => "duplex": "full"
description: Mode Ethernet entre l'IAD et le terminal - élément présent lorsque la connexion LAN est "Ethernet" et "Lan complexity = Direct" ou "Lan complexity = Complex".
type: string
enum: [half, full]

vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Section LAN - Wi-Fi

"lan" => "wifi" => "ieeeMax": "6E"
description: Norme Wifi IEEE 802.11 la plus élevée supportée par la box. Un chiffre représentant chaque technologie (802.11a => 1 ; 802.11b => 2 ; 802.11g => 3 ; 802.11n => 4 ; 802.11ac => 5 ; 802.11ax => 6 ; 802.11be => 7...) - élément présent lorsque la connexion LAN est "Wi-Fi" et "Lan complexity = Direct" ou "Lan complexity = Complex".
type: string

"lan" => "wifi" => "ieee": "6E"
description: Norme Wifi IEEE 802.11 négociée entre l'IAD et le terminal requêtant l'API. Un chiffre représentant chaque technologie (802.11a => 1 ; 802.11b => 2 ; 802.11g => 3 ; 802.11n => 4 ; 802.11ac => 5 ; 802.11ax => 6 ; 802.11be => 7...) - élément présent lorsque la connexion LAN est "Wi-Fi" et "Lan complexity = Direct" ou "Lan complexity = Complex".
type: string

"lan" => "wifi" => "radioBand": "6"
description: Bande radio Wi-Fi utilisée par le terminal requêtant l’API. Bloc de fréquence de 2,4 GHz, bloc de fréquence de 5 GHz ou bloc de fréquence de 6 Ghz. Une chaine de caractère représente chaque technologie (Bande 2,4 Ghz => 2 ; Bande 5 Ghz => 5 ; Bande 6 Ghz => 6) - élément présent lorsque la connexion LAN est "Wi-Fi" et "Lan complexity = Direct" ou "Lan complexity = Complex".
type: string

"lan" => "wifi" => "rssi": -50
description: Calcul à l’instant t par l’AP de l’IAD de la puissance du signal radio reçu du terminal (requêtant l’API). Facultatif - Le calcul est la moyenne des mesures RSSI effectuées sur chacune des antennes de l’AP (dBm) - élément présent lorsque la connexion LAN est "Wi-Fi" et "Lan complexity = Direct" ou "Lan complexity = Complex".
type: string
format: int64
maximum: 0

vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Tester le fonctionnement de l'API Arcep de caractérisation des tests de débit
« Réponse #10 le: 11 janvier 2023 à 13:55:37 »
Section LAN - Calcul d'un cross-trafic sur le LAN (ex: accès à un film sur le NAS de la box)

"lan" => "byteCounter" => "download": 2021748595
description: Relevé du compteur de trafic descendant (IAD => terminal utilisateur) du port LAN (octets) - élément facultatif, certains FAI le renseignement, d'autre non.
type: integer
format: int64
minimum: 0

"lan" => "byteCounter" => "upload": 4292080939
description: Relevé du compteur de trafic montant (terminal utilisateur => IAD) du port LAN (octets) - élément facultatif, certains FAI le renseignement, d'autre non.
type: integer
format: int64
minimum: 0



Section Timestamp

"timestamp" => "apiCallTime": 1672830235
description: Horodatage correspondant à l'heure à laquelle l'API est requêtée.
type: integer
format: int64
minimum: 0

"timestamp" => "lastUpdate": 1672830234
description: Horodatage de la dernière mise à jour du compteur du port WAN (si le compteur est relevé en temps réel alors LastUpdate = ApiCallTime).
type: integer
format: int64
minimum: 0

vivien

  • Administrateur
  • *
  • Messages: 47 175
    • Twitter LaFibre.info
Tester le fonctionnement de l'API Arcep de caractérisation des tests de débit
« Réponse #11 le: 11 janvier 2023 à 13:56:24 »
"apiVersion": 4312662016
Version de l'API. 32 premiers bits - évolutions majeures (évolutions concertées avec l'ensemble des opérateurs et l'Arcep), 32 derniers bits - évolutions mineures (numérotation propre à chaque opérateur).
type: integer
format: int64

"id": "af6b2d8c-0c29-4734-80a6-b426249d7406"
Identifiant unique du test (récupéré lors du 1er appel). Permet de faire le lien entre le premier et le second appel.
type: string
format: uuid