Nokia SR Linux

SR Linux est un NOS (Network Operating System) qui exploite la pile de protocoles de routage de Nokia SR OS, tout en utilisant également Linux comme système d’exploitation sous-jacent, permettant aux administrateurs d’utiliser des outils de débogage et de configuration qu’ils connaissent bien, même s’ils n’ont aucune expérience avec SR OS.
Les fonctions de routage sur SR Linux s’exécutent comme des applications modulaires et légères, configurables via des API externes. Ces applications utilisent gRPC et des API pour communiquer entre elles et avec des systèmes externes via TCP. Les applications fournies par Nokia peuvent être complétées par des applications développées par des tiers, qui se connectent au framework SR Linux. Les fonctions « Application-based » permettent des mises à jour modulaires et une isolation facile des pannes.

Nokia SR Linux
Source Nokia

SR Linux utilise largement les modèles de données structurées. Chaque application a un modèle YANG qui pilote sa configuration et son état. SR Linux expose les modèles YANG aux API de gestion prises en charge. Par exemple, l’arborescence de commandes dans le CLI est dérivée des modèles SR Linux YANG chargés dans le système, et un client gNMI peut utiliser des RPC définis pour configurer une application en fonction de son modèle YANG. Lorsqu’une configuration est validée, le serveur de gestion SR Linux valide les modèles YANG et les traduit en « protocol buffers » pour la base de données IDB (Impart DataBase).

Modularité Nokia SR Linux
Source Nokia

SR Linux fournit un kit de développement NetOps (NDK), avec une suite de librairies pour aider les administrateurs à développer des agents qui s’exécutent avec les applications SR Linux. Les agents construits avec le NDK (NetOps Development Kit) gRPC fonctionnent de manière similaire à d’autres applications fournies avec SR Linux.

Ce système d’exploitation est disponible sur les plateformes matérielles Nokia 7220 Interconnect Router (7220 IXR) et 7250 IXR-10/IXR-6 Interconnect Routers (7250 IXR). Depuis quelques jours, une version SR Linux tournant dans un conteneur Docker est disponible publiquement pour réaliser des simulations réseau. Un site est même disponible pour apprendre à utiliser SR Linux. Faire tourner un NOS dans un conteneur a de nombreux avantages, comme, par exemple, le besoin réduit de ressources par rapport à une machine virtuelle.

Pour l’exemple ci-dessous, un fichier YAML décrit le lab et sert de référence pour le lancement Containerlab.

name: nokia

topology:
  kinds:
    srl:
      image: ghcr.io/nokia/srlinux:latest
    linux:
      image: alpine:latest
  nodes:
    spine1:
      kind: srl
    spine2:
      kind: srl
    leaf1:
      kind: srl
    leaf2:
      kind: srl
    leaf3:
      kind: srl
    server1:
      kind: linux
    server2:
      kind: linux
    server3:
      kind: linux
  links:
    - endpoints: ["spine1:e1-1", "leaf1:e1-1"]
    - endpoints: ["spine1:e1-2", "leaf2:e1-1"]
    - endpoints: ["spine1:e1-3", "leaf3:e1-1"]
    - endpoints: ["spine2:e1-1", "leaf1:e1-2"]
    - endpoints: ["spine2:e1-2", "leaf2:e1-2"]
    - endpoints: ["spine2:e1-3", "leaf3:e1-2"]
    - endpoints: ["leaf1:e1-3", "server1:et1"]
    - endpoints: ["leaf2:e1-3", "server2:et1"]
    - endpoints: ["leaf3:e1-3", "server3:et1"]
docker pull ghcr.io/nokia/srlinux
sudo containerlab deploy -t nokia.clab.yaml
Lab Docker Containerlab SR Linux
Lab SR Linux

Une architecture Clos Network avec deux Spines, trois Leafs et trois serveurs Alpine peut tourner facilement avec seulement 4 vCPUs et 8 Go de RAM.

Ressources Containerlab SR Linux
Ressources consommées par le lab

Le type de noeud SR Linux définit le modèle à émuler. Les types disponibles sont : ixr6, ixr10, ixrd1, ixrd2 et ixrd3 qui correspondent aux modèles physiques Nokia 7250/7220 IXR. Par défaut, c’est le type ixr6 qui est utilisé par Containerlab. En fonction du type fourni, Containerlab générera le fichier de topologie qui sera monté sur le conteneur SR Linux et le fera démarrer dans la variante matérielle choisie.

# Copyright 2020 Nokia
# Licensed under the BSD 3-Clause License.
# SPDX-License-Identifier: BSD-3-Clause

chassis_configuration:
  "chassis_type": 42
  "base_mac": "02:45:cb:00:00:00"
  "cpm_card_type": 69 # cpm2-ixr

slot_configuration:
  1:
    "card_type": 127
    "mda_type": 36 # 32xQSFP28+4xQSFP-DD (imm32-100g-qsfp28+4-400g-qsfpdd)

Nativement, le conteneur SR Linux accepte les interaction via un accès bash au conteneur, un accès CLI au conteneur, un accès SSH, un accès gNMI en TCP sur le port 57400 et un accès utilisant l’interface JSON-RPC sur les ports 80/443 pour HTTP/HTTPS .

gnmic -a 172.20.20.4 -u admin -p admin --skip-verify capabilities

gNMI version: 0.7.0
supported models:
  - urn:srl_nokia/aaa:srl_nokia-aaa, Nokia, 2021-06-30
  - urn:srl_nokia/aaa-types:srl_nokia-aaa-types, Nokia, 2019-11-30
  - urn:srl_nokia/acl:srl_nokia-acl, Nokia, 2021-03-31
  - urn:srl_nokia/aggregate-routes:srl_nokia-aggregate-routes, Nokia, 2021-03-31
  - urn:srl_nokia/app-mgmt:srl_nokia-app-mgmt, Nokia, 2021-03-31
  - urn:srl_nokia/bfd:srl_nokia-bfd, Nokia, 2021-03-31
  - urn:srl_nokia/bgp:srl_nokia-bgp, Nokia, 2021-06-30
  - urn:srl_nokia/network-instance/protocols/bgp-evpn:srl_nokia-bgp-evpn, Nokia, 2021-03-31
  - urn:srl_nokia/bgp-vpn:srl_nokia-bgp-vpn, Nokia, 2021-03-31
  - urn:srl_nokia/boot:srl_nokia-boot, Nokia, 2021-03-31
  - ..................
  - ..................
  - urn:srl_nokia/tools-packet-trace:srl_nokia-tools-packet-trace, Nokia, 2019-11-30
  - urn:srl_nokia/tools-platform:srl_nokia-tools-platform, Nokia, 2021-03-31
  - urn:srl_nokia/tools-platform-redundancy:srl_nokia-tools-platform-redundancy, Nokia, 2020-06-30
  - urn:srl_nokia/tools-qos:srl_nokia-tools-qos, Nokia, 2021-03-31
  - urn:srl_nokia/tools-system:srl_nokia-tools-system, Nokia, 2019-11-30
  - urn:srl_nokia/tools-tls:srl_nokia-tools-tls, Nokia, 2021-03-31
  - urn:srl_nokia/tools-tunnel:srl_nokia-tools-tunnel, Nokia, 2021-03-31
  - urn:srl_nokia/tools-vxlan-tunnel:srl_nokia-tools-vxlan-tunnel, Nokia, 2021-03-31
supported encodings:
  - JSON_IETF
  - ASCII
  - 45
  - 44
  - 46
  - 47
  - 48
  - 49
  - 50