User Tools

Site Tools


reseau:ryu-ofctl-rest

Ryu: ofctl_rest

inlinetoc

ryu.app.ofctl_rest fournit des API REST permettant de récupérer les statistiques du commutateur et de mettre à jour les statistiques du commutateur. Cette application vous aide à déboguer votre application et à obtenir diverses statistiques.

Cette application prend en charge OpenFlow version 1.0, 1.2, 1.3, 1.4 et 1.5.

Récupérer les statistiques du commutateur

Récapitulatif des Match fields

Match field Description Exemple
in_port Switch input port (int) {“in_port”: 7}
in_phy_port Switch physical input port (int) {“in_phy_port”: 5, “in_port”: 3}
metadata Metadata passed between tables (int or string) {“metadata”: 12345} or {“metadata”: “0x1212/0xffff”}
eth_dst Ethernet destination address (string) {“eth_dst”: “aa:bb:cc:11:22:33/00:00:00:00:ff:ff”}
eth_src Ethernet source address (string) {“eth_src”: “aa:bb:cc:11:22:33”}
eth_type Ethernet frame type (int) {“eth_type”: 2048}
vlan_vid VLAN id (int or string) See :ref:example-of-vlan-id-match-field
vlan_pcp VLAN priority (int) {“vlan_pcp”: 3, “vlan_vid”: 3}
ip_dscp IP DSCP (6 bits in ToS field) (int) {“ip_dscp”: 3, “eth_type”: 2048}
ip_ecn IP ECN (2 bits in ToS field) (int) {“ip_ecn”: 0, “eth_type”: 34525}
ip_proto IP protocol (int) {“ip_proto”: 5, “eth_type”: 34525}
ipv4_src IPv4 source address (string) {“ipv4_src”: “192.168.0.1”, “eth_type”: 2048}
ipv4_dst IPv4 destination address (string) {“ipv4_dst”: “192.168.10.10/255.255.255.0”, “eth_type”: 2048}
tcp_src TCP source port (int) {“tcp_src”: 3, “ip_proto”: 6, “eth_type”: 2048}
tcp_dst TCP destination port (int) {“tcp_dst”: 5, “ip_proto”: 6, “eth_type”: 2048}
udp_src UDP source port (int) {“udp_src”: 2, “ip_proto”: 17, “eth_type”: 2048}
udp_dst UDP destination port (int) {“udp_dst”: 6, “ip_proto”: 17, “eth_type”: 2048}
sctp_src SCTP source port (int) {“sctp_src”: 99, “ip_proto”: 132, “eth_type”: 2048}
sctp_dst SCTP destination port (int) {“sctp_dst”: 99, “ip_proto”: 132, “eth_type”: 2048}
icmpv4_type ICMP type (int) {“icmpv4_type”: 5, “ip_proto”: 1, “eth_type”: 2048}
icmpv4_code ICMP code (int) {“icmpv4_code”: 6, “ip_proto”: 1, “eth_type”: 2048}
arp_op ARP opcode (int) {“arp_op”: 3, “eth_type”: 2054}
arp_spa ARP source IPv4 address (string) {“arp_spa”: “192.168.0.11”, “eth_type”: 2054}
arp_tpa ARP target IPv4 address (string) {“arp_tpa”: “192.168.0.44/24”, “eth_type”: 2054}
arp_sha ARP source hardware address (string) {“arp_sha”: “aa:bb:cc:11:22:33”, “eth_type”: 2054}
arp_tha ARP target hardware address (string) {“arp_tha”: “aa:bb:cc:11:22:33/00:00:00:00:ff:ff”, “eth_type”: 2054}
ipv6_src IPv6 source address (string) {“ipv6_src”: “2001::aaaa:bbbb:cccc:1111”, “eth_type”: 34525}
ipv6_dst IPv6 destination address (string) {“ipv6_dst”: “2001::ffff:cccc:bbbb:1111/64”, “eth_type”: 34525}
ipv6_flabel IPv6 Flow Label (int) {“ipv6_flabel”: 2, “eth_type”: 34525}
icmpv6_type ICMPv6 type (int) {“icmpv6_type”: 3, “ip_proto”: 58, “eth_type”: 34525}
icmpv6_code ICMPv6 code (int) {“icmpv6_code”: 4, “ip_proto”: 58, “eth_type”: 34525}
ipv6_nd_target Target address for Neighbor Discovery (string) {“ipv6_nd_target”: “2001::ffff:cccc:bbbb:1111”, “icmpv6_type”: 135, “ip_proto”: 58, “eth_type”: 34525}
ipv6_nd_sll Source link-layer for Neighbor Discovery (string) {“ipv6_nd_sll”: “aa:bb:cc:11:22:33”, “icmpv6_type”: 135, “ip_proto”: 58, “eth_type”: 34525}
ipv6_nd_tll Target link-layer for Neighbor Discovery (string) {“ipv6_nd_tll”: “aa:bb:cc:11:22:33”, “icmpv6_type”: 136, “ip_proto”: 58, “eth_type”: 34525}
mpls_label MPLS label (int) {“mpls_label”: 3, “eth_type”: 34888}
mpls_tc MPLS Traffic Class (int) {“mpls_tc”: 2, “eth_type”: 34888}
mpls_bos MPLS BoS bit (int) (Openflow1.3+) {“mpls_bos”: 1, “eth_type”: 34888}
pbb_isid PBB I-SID (int or string) (Openflow1.3+) {“pbb_isid”: 5, “eth_type”: 35047} or{“pbb_isid”: “0x05/0xff”, “eth_type”: 35047}
tunnel_id Logical Port Metadata (int or string) (Openflow1.3+) {“tunnel_id”: 7} or {“tunnel_id”: “0x07/0xff”}
ipv6_exthdr IPv6 Extension Header pseudo-field (int or string) (Openflow1.3+) {“ipv6_exthdr”: 3, “eth_type”: 34525} or {“ipv6_exthdr”: “0x40/0x1F0”, “eth_type”: 34525}
pbb_uca PBB UCA hander field(int) (Openflow1.4+) {“pbb_uca”: 1, “eth_type”: 35047}
tcp_flags TCP flags(int) (Openflow1.5+) {“tcp_flags”: 2, “ip_proto”: 6, “eth_type”: 2048}
actset_output Output port from action set metadata(int) (Openflow1.5+) {“actset_output”: 3}
packet_type Packet type value(int) (Openflow1.5+) {“packet_type”: [1, 2048]}

Liste de tous les commutateurs

Obtenir la liste de tous les commutateurs connectés au contrôleur.

Usage:

Méthode GET
URI /stats/commutateurs

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath 1

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/switches
 [
  1 ,
  2 ,
  3
]

Statistiques de desc

Obtenir les statistiques de descente du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/desc/<dpid>

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath “1”
mfr_desc Description du fabricant “Nicira, Inc.”,
hw_desc Description du matériel “Open vSwitch”,
sw_desc Description du logiciel “2.3.90”,
serial_num Numéro de série “Aucun”,
dp_desc Description lisible par l'homme du chemin de données “Aucun”

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/desc/1
 {
  "1" : {
  "mfr_desc" : "Nicira, Inc." ,
  "hw_desc" : "Open vSwitch" ,
  "sw_desc" : "2.3.90" ,
  "serial_num" : "None" ,
  "dp_desc" : "None"
  }
}

Statistiques de flux

Obtenir toutes les statistiques de flux du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GETS
URI /stats/flow/<dpid>

Corps du message de réponse (OpenFlow1.3 ou antérieur):

Attribut Description Exemple
dpid ID de Datapath “1”
length Longueur de cette entrée 88
id_table ID de table 0
duration_sec Le flux de temps a été vivant en secondes 2
duration_nsec Le flux de temps a été vivant en nanosecondes au-delà de duration_sec 6.76e + 08
priority Priorité de l'entrée 11111
idle_timeout Nombre de secondes d'inactivité avant l'expiration 0
hard_timeout Nombre de secondes avant l'expiration 0
flags Bitmap des drapeaux OFPFF_ * 1
cookie Identifiant émis par le contrôleur opaque 1
packet_count Nombre de paquets en flux 0
byte_count Nombre d'octets dans le flux 0
match Champs à rechercher {“in_port”: 1}
actions Jeu d'instructions [“SORTIE: 2”]

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/flow/1

Réponse (OpenFlow1.3 ou version antérieure):

 {
  "1" : [
  {
  "length" : 88 ,
  "table_id" : 0 ,
  "duration_sec" : 2 ,
  "duration_nsec" : 6.76e+08 ,
  "priority" : 11111 ,
  "idle_timeout" : 0 ,
  "hard_timeout" : 0 ,
  "flags" : 1 ,
  "cookie" : 1 ,
  "packet_count" : 0 ,
  "byte_count" : 0 ,
  "match" : {
    "in_port" : 1
  },
  "actions" : [
    "OUTPUT:2"
  ]
  }
  ]
}

Statistiques de flux filtrés par champs

Obtenez les statistiques de flux du commutateur filtrées par les champs OFPFlowStats. Ceci est la version POST de la méthode Obtenir toutes les statistiques de flux .

Usage:

Méthode POST
URI /stats/flow/<dpid>

Corps du message de demande:

Attribut Description Exemple Défaut
id_table ID de table (int) 0 OFPTT_ALL
out_port Exiger des entrées correspondantes pour l'inclure en tant que port de sortie (int) 2 OFPP_ANY
out_group Exiger des entrées correspondantes pour l'inclure en tant que groupe de sortie (int) 1 OFPG_ANY
cookie Exiger que les entrées correspondantes contiennent cette valeur de cookie (int) 1 0
cookie_mask Masque utilisé pour restreindre les bits de cookie qui doivent correspondre (int) 1 0
match Champs à faire correspondre (dict) {“in_port”: 1} {} #wildcarded
priority Priorité de l'entrée (int) (voir la note) 11111 #wildcarded

OpenFlow Spec ne permet pas de filtrer les entrées de flux par priorité, mais lorsque le nombre d'entrées de flux est élevé, le filtrage par priorité est pratique pour obtenir des statistiques efficacement. Donc, cette application fournit un champ de priorité pour le filtrage.

Corps du message de réponse

Identique à Obtenir toutes les statistiques de flux

Exemple d'utilisation:

$ curl -X POST -d '{
   "table_id": 0,
   "out_port": 2,
   "cookie": 1,
   "cookie_mask": 1,
   "match":{
   "in_port":1
   }
 }' http://localhost:8080/stats/flow/1

Réponse (OpenFlow1.3 ou version antérieure):

 {
  "1" : [
  {
  "length" : 88 ,
  "table_id" : 0 ,
  "duration_sec" : 2 ,
  "duration_nsec" : 6.76e+08 ,
  "priority" : 11111 ,
  "idle_timeout" : 0 ,
  "hard_timeout" : 0 ,
  "flags" : 1 ,
  "cookie" : 1 ,
  "packet_count" : 0 ,
  "byte_count" : 0 ,
  "match" : {
    "in_port" : 1
  },
  "actions" : [
    "OUTPUT:2"
  ]
  }
  ]
}

Statistiques de flux globales

Obtenir des statistiques de flux globales du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/aggregflow/<dpid>

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath “1”
packet_count Nombre de paquets dans les flux 18
nombre d'octets Nombre d'octets dans les flux 756
flow_count Nombre de flux 3

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/aggregateflow/1
 {
  "1" : [
  {
  "packet_count" : 18 ,
  "byte_count" : 756 ,
  "flow_count" : 3
  }
  ]
}

Statistiques de flux agrégées filtrées par champs

Obtenir des statistiques de flux globales du commutateur filtrées par les champs OFPAggregateStats. Ceci est la version POST de la méthode Obtenir des statistiques de flux globales .

Usage:

Méthode POST
URI

Corps du message de demande:

Attribut Description Exemple Défaut
id_table ID de table (int) 0 OFPTT_ALL
out_port Exiger des entrées correspondantes pour l'inclure en tant que port de sortie (int) 2 OFPP_ANY
out_group Exiger des entrées correspondantes pour l'inclure en tant que groupe de sortie (int) 1 OFPG_ANY
cookie Exiger que les entrées correspondantes contiennent cette valeur de cookie (int) 1 0
cookie_mask Masque utilisé pour restreindre les bits de cookie qui doivent correspondre (int) 1 0
match Champs à faire correspondre (dict) {“in_port”: 1} {} #wildcarded

Corps du message de réponse

Identique à celui des statistiques de flux globales

Exemple d'utilisation:

$ curl -X POST -d '{
   "table_id": 0,
   "out_port": 2,
   "cookie": 1,
   "cookie_mask": 1,
   "match":{
   "in_port":1
   }
 }' http://localhost:8080/stats/aggregateflow/1
 {
  "1" : [
  {
  "packet_count" : 18 ,
  "byte_count" : 756 ,
  "flow_count" : 3
  }
  ]
}

Statistiques de la table

Obtenir les statistiques de table du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/table/<dpid>

Corps du message de réponse (OpenFlow1.3):

Attribut Description Exemple
dpid ID de Datapath “1”
id_table ID de table 0
active_count Nombre d'entrées actives 0
lookup_count Nombre de paquets recherchés dans la table 8
matched_count Nombre de paquets ayant atteint la table 0

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/table/1
 {
  "1" : [
  {
  "active_count" : 0 ,
  "table_id" : 0 ,
  "lookup_count" : 8 ,
  "matched_count" : 0
  },
  ...
  {
  "active_count" : 0 ,
  "table_id" : 253 ,
  "lookup_count" : 0 ,
  "matched_count" : 0
  }
  ]
}

Fonctionnalités de la table

Obtenir les caractéristiques de table du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/tablefeatures/<dpid>

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath “1”
id_table ID de table 0
name Nom de la table “table_0”
metadata_match Les bits de la table de métadonnées peuvent correspondre 18446744073709552000
metadata_write Les bits de la table de métadonnées peuvent écrire 18446744073709552000
config Bitmap des valeurs OFPTC_ * 0
max_entries Nombre maximum d'entrées supportées 4096
properties struct ofp_table_feature_prop_header [{“type”: “INSTRUCTIONS”, “instruction_ids”: […]}, …]

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/tablefeatures/1
 {
  "1" : [
  {
  "metadata_write" : 18446744073709552000 ,
  "config" : 0 ,
  "table_id" : 0 ,
  "metadata_match" : 18446744073709552000 ,
  "max_entries" : 4096 ,
  "properties" : [
    {
    "type" : "INSTRUCTIONS" ,
    "instruction_ids" : [
     {
     "len" : 4 ,
     "type" : 1
     },
     ...
    ]
    },
    ...
  ],
  "name" : "table_0"
  },
  {
  "metadata_write" : 18446744073709552000 ,
  "config" : 0 ,
  "table_id" : 1 ,
  "metadata_match" : 18446744073709552000 ,
  "max_entries" : 4096 ,
  "properties" : [
    {
    "type" : "INSTRUCTIONS" ,
    "instruction_ids" : [
     {
     "len" : 4 ,
     "type" : 1
     },
     ...
    ]
    },
    ...
  ],
  "name" : "table_1"
  },
  ...
  ]
}

Statistiques des ports

Obtenir les statistiques de ports du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/port/<dpid> [/<port>]

La spécification du numéro de port est facultative.

Corps du message de réponse (OpenFlow1.3 ou antérieur):

Attribut Description Exemple
dpid ID de Datapath “1”
port_no Numéro de port 1
rx_packets Nombre de paquets reçus 9
tx_packets Nombre de paquets transmis 6
rx_bytes Nombre d'octets reçus 738
tx_bytes Nombre d'octets transmis 252
rx_dropped Nombre de paquets rejetés par RX 0
tx_dropped Nombre de paquets rejetés par TX 0
rx_errors Nombre d'erreurs de réception 0
tx_errors Nombre d'erreurs de transmission 0
rx_frame_err Nombre d'erreurs d'alignement de trame 0
rx_over_err Nombre de paquets avec saturation RX 0
rx_crc_err Nombre d'erreurs CRC 0
les collisions Nombre de collisions 0
durée_sec Le port de temps a été vivant en secondes 12
duration_nsec Le port de temps a été vivant en nanosecondes au-delà de duration_sec 9.76e + 08

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/port/1

Réponse (OpenFlow1.3 ou version antérieure):

 {
  "1" : [
  {
  "port_no" : 1 ,
  "rx_packets" : 9 ,
  "tx_packets" : 6 ,
  "rx_bytes" : 738 ,
  "tx_bytes" : 252 ,
  "rx_dropped" : 0 ,
  "tx_dropped" : 0 ,
  "rx_errors" : 0 ,
  "tx_errors" : 0 ,
  "rx_frame_err" : 0 ,
  "rx_over_err" : 0 ,
  "rx_crc_err" : 0 ,
  "collisions" : 0 ,
  "duration_sec" : 12 ,
  "duration_nsec" : 9.76e+08
  },
  {
  :
  :
  }
  ]
}

Description des ports

Obtenir la description des ports du commutateur spécifié avec l'ID Datapath dans l'URI.

Utilisation (OpenFlow1.4 ou version antérieure):

Méthode GET
URI /stats/portdesc/<dpid>

Corps du message de réponse (OpenFlow1.3 ou antérieur):

Attribut Description Exemple
dpid ID de Datapath “1”
port_no Numéro de port 1
hw_addr Adresse matérielle Ethernet “0a: b6: d0: 0c: e1: d7”
name Nom du port “s1-eth1”
config Bitmap des drapeaux OFPPC_ * 0
state Bitmap des drapeaux OFPPS_ * 0
curr Caractéristiques actuelles 2112
advertised Caractéristiques annoncées par le port 0
supported Fonctionnalités prises en charge par le port 0
peer Caractéristiques annoncées par les pairs 0
curr_speed Débit actuel du port en kbps 1e + 07
max_speed Débit maximum de port en kbps 0

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/portdesc/1

Réponse (OpenFlow1.3 ou version antérieure):

 {
  "1" : [
  {
  "port_no" : 1 ,
  "hw_addr" : "0a:b6:d0:0c:e1:d7" ,
  "name" : "s1-eth1" ,
  "config" : 0 ,
  "state" : 0 ,
  "curr" : 2112 ,
  "advertised" : 0 ,
  "supported" : 0 ,
  "peer" : 0 ,
  "curr_speed" : 1 e + 07 ,
  "max_speed" : 0
  },
  {
  :
  :
  }
  ]
}

Statistiques des files d'attente

Obtenir les statistiques de la file d'attente du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/queue/<dpid> [/<port> [/<queue_id>]]

La spécification du numéro de port et de l'identifiant de la file d'attente est facultative.

Pour omettre le numéro de port et définir l'ID de la file d'attente, spécifier le mot clé “ALL” pour le numéro de port, par exemple, GET http://localhost: 8080/stats/queue/1/ALL/1

Corps du message de réponse (OpenFlow1.3 ou antérieur):

Attribut Description Exemple
dpid ID de Datapath “1”
port_no Numéro de port 1
queue_id ID de file d'attente 0
tx_bytes Nombre d'octets transmis 0
tx_packets Nombre de paquets transmis 0
tx_errors Nombre de paquets rejetés en raison d'un dépassement 0
duration_sec La file d'attente a été ouverte en quelques secondes 4294963425
duration_nsec La file d'attente a été ouverte en nanosecondes au-delà de duration_sec 3912967296

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/queue/1

Réponse (OpenFlow1.3 ou version antérieure):

 {
  "1" : [
  {
  "port_no" : 1 ,
  "queue_id" : 0 ,
  "tx_bytes" : 0 ,
  "tx_packets" : 0 ,
  "tx_errors" : 0 ,
  "duration_sec" : 4294963425 ,
  "duration_nsec" : 3912967296
  },
  {
  "port_no" : 1 ,
  "queue_id" : 1 ,
  "tx_bytes" : 0 ,
  "tx_packets" : 0 ,
  "tx_errors" : 0 ,
  "duration_sec" : 4294963425 ,
  "duration_nsec" : 3912967296
  }
  ]
}

Configuration des files d'attente

Obtenir la configuration des files d'attente du commutateur spécifié avec l'ID Datapath et le port dans l'URI.

Usage:

Méthode GET
URI /stats/queueconfig/<dpid>/[<port>]

La spécification du numéro de port est facultative.

Ce message est obsolète dans Openflow1.4. Si OpenFlow 1.4 ou version ultérieure est en cours d'utilisation, veuillez vous reporter à la description Obtenir des files d'attente .

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath “1”
port Port qui a été interrogé 1
queues struct ofp_packet_queue
– queue_id ID de la file d'attente spécifique 2
– port Port auquel cette file d'attente est attachée 0
– properties Propriétés de la struct ofp_queue_prop_header [{“property”: “MIN_RATE”, “rate”: 80}]

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/queueconfig/1/1
 {
  "1" : [
  {
  "port" : 1 ,
  "queues" : [
    {
    "properties" : [
    {
      "property" : "MIN_RATE" ,
      "rate" : 80
    }
    ],
    "port" : 0 ,
    "queue_id" : 1
    },
    {
    "properties" : [
    {
      "property" : "MAX_RATE" ,
      "rate" : 120
    }
    ],
    "port" : 2 ,
    "queue_id" : 2
    },
    {
    "properties" : [
    {
      "property" : "EXPERIMENTER" ,
      "data" : [],
      "experimenter" : 999
    }
    ],
    "port" : 3 ,
    "queue_id" : 3
    }
  ]
  }
  ]
}

Description des files d'attente

Obtenir la description des files d'attente du commutateur spécifié avec l'ID, le port et le Queue_id de Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/queuedesc/<dpid> [/<port>/[<queue_id>]]

La spécification du numéro de port et de l'identifiant de la file d'attente est facultative.

Pour omettre le numéro de port et définir l'ID de la file d'attente, spécifiez le mot clé “ALL” pour le numéro de port, par exemple, GET http://localhost: 8080/stats/queuedesc/1/ALL/1

Ce message n'est disponible que depuis OpenFlow1.4. Pour Openflow1.3 ou une version antérieure, se reporter à la section Obtenir la configuration de files d'attente.

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath “1”
len Longueur en octets de cette file d'attente desc 88
port_no Port qui a été interrogé 1
queue_id ID de file d'attente 1
properties struct ofp_queue_desc_prop_header [{“longueur”: 8, …}, …]

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/queuedesc/1/1/1
 {
 "1" : [
   {
   "len" : 88 ,
   "port_no" : 1 ,
   "queue_id" : 1 ,
   "properties" : [
   {
     "length" : 8 ,
     "rate" : 300 ,
     "type" : "MIN_RATE"
   },
   {
     "length" : 8 ,
     "rate" : 900 ,
     "type" : "MAX_RATE"
   },
   {
     "length" : 16 ,
     "exp_type" : 0 ,
     "experimenter" : 101 ,
     "data" : [ 1 ],
     "type" : "EXPERIMENTER"
   },
   {
     :

     :
   }
   ]
   }
 ]
 }

Statistiques des groupes

Obtenir les statistiques de groupes du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/group/<dpid> [/<group_id>]

La spécification de l'identifiant de groupe est facultative.

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath “1”
length Longueur de cette entrée 56
group_id ID de groupe 1
ref_count Nombre de flux ou de groupes qui transmettent directement à ce groupe 1
packet_count Nombre de paquets traités par groupe 0
byte_count Nombre d'octets traités par groupe 0
duration_sec Groupe de temps a été vivant en secondes 161
duration_nsec Le groupe de temps a été vivant en nanosecondes au-delà de duration_sec 3.03e + 08
bucket_stats struct ofp_bucket_counter
– packet_count Nombre de paquets traités par compartiment 0
– byte_count Nombre d'octets traités par compartiment 0

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/group/1
 {
  "1" : [
  {
  "length" : 56 ,
  "group_id" : 1 ,
  "ref_count" : 1 ,
  "packet_count" : 0 ,
  "byte_count" : 0 ,
  "duration_sec" : 161 ,
  "duration_nsec" : 3.03e+08 ,
  "bucket_stats" : [
    {
    "packet_count" : 0 ,
    "byte_count" : 0
    }
  ]
  }
  ]
}

Statistiques de description du groupe

Obtenir les statistiques de description de groupe du commutateur spécifié avec l'ID Datapath dans l'URI.

Utilisation (Openflow1.4 ou antérieure):

Méthode GET
URI /stats/groupdesc/<dpid>

Corps du message de réponse (Openflow1.3 ou antérieur):

Attribut Description Exemple
dpid ID de Datapath “1”
type Un des OFPGT_ * “ALL”
group_id ID de groupe 1
buckets struct ofp_bucket
– poids Poids relatif du compartiment (défini uniquement pour certains groupes) 0
– watch_port Port dont l'état détermine si ce compartiment est actif (requis uniquement pour les groupes de basculement rapide) 4294967295
– watch_group Groupe dont l'état détermine si ce compartiment est actif (requis uniquement pour les groupes de basculement rapide) 4294967295
– actions 0 ou plusieurs actions associées au compartiment [“OUTPUT: 1”]

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/groupdesc/1

Réponse (Openflow1.3 ou antérieure):

 {
  "1" : [
  {
  "type" : "ALL" ,
  "group_id" : 1 ,
  "buckets" : [
    {
    "weight" : 0 ,
    "watch_port" : 4294967295 ,
    "watch_group" : 4294967295 ,
    "actions" : [
    "OUTPUT:1"
    ]
    }
  ]
  }
  ]
}

Statistiques des fonctionnalités du groupe

Obtenir les statistiques des fonctionnalités de groupe du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/groupfeatures/<dpid>

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath “1”
types Bitmap de valeurs (1 « OFPGT_ *) supportées []
capabilities Bitmap de la capacité OFPGFC_ * prise en charge [“SELECT_WEIGHT”, “SELECT_LIVENESS”, “CHAINING”]
max_groups Nombre maximum de groupes pour chaque type [{“ALL”: 4294967040}, …]
actions Images bitmap prises en charge (1 « OFPAT_ *) [{“ALL”: [“OUTPUT”, …]}, …]

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/groupfeatures/1
 {
  "1" : [
  {
  "types" : [],
  "capabilities" : [
    "SELECT_WEIGHT" ,
    "SELECT_LIVENESS" ,
    "CHAINING"
  ],
  "max_groups" : [
    {
    "ALL" : 4294967040
    },
    {
    "SELECT" : 4294967040
    },
    {
    "INDIRECT" : 4294967040
    },
    {
    "FF" : 4294967040
    }
  ],
  "actions" : [
    {
    "ALL" : [
    "OUTPUT" ,
    "COPY_TTL_OUT" ,
    "COPY_TTL_IN" ,
    "SET_MPLS_TTL" ,
    "DEC_MPLS_TTL" ,
    "PUSH_VLAN" ,
    "POP_VLAN" ,
    "PUSH_MPLS" ,
    "POP_MPLS" ,
    "SET_QUEUE" ,
    "GROUP" ,
    "SET_NW_TTL" ,
    "DEC_NW_TTL" ,
    "SET_FIELD"
    ]
    },
    {
    "SELECT" : []
    },
    {
    "INDIRECT" : []
    },
    {
    "FF" : []
    }
  ]
  }
  ]
}

Statistiques des compteurs

Obtenir les statistiques des compteurs du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/meter/<dpid> [/<meter_id>]

La spécification de l'identifiant du compteur est facultative.

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath “1”
meter_id ID du compteur 1
len Longueur en octets de cette statistique 56
flow_count Nombre de flux liés au compteur 0
packet_in_count Nombre de paquets en entrée 0
byte_in_count Nombre d'octets en entrée 0
duration_sec Le compteur de temps a été vivant en secondes 37
duration_nsec Le compteur de temps a été en vie en nanosecondes au-delà de duration_sec 988000
band_stats struct ofp_meter_band_stats
– packet_band_count Nombre de paquets dans la bande 0
– byte_band_count Nombre d'octets dans la bande 0

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/meter/1
 {
  "1" : [
  {
  "meter_id" : 1 ,
  "len" : 56 ,
  "flow_count" : 0 ,
  "packet_in_count" : 0 ,
  "byte_in_count" : 0 ,
  "duration_sec" : 37 ,
  "duration_nsec" : 988000 ,
  "band_stats" : [
    {
    "packet_band_count" : 0 ,
    "byte_band_count" : 0
    }
  ]
  }
  ]
}

Statistiques de description du compteur

Obtenir les statistiques de configuration de compteur du commutateur spécifié avec l'ID Datapath dans l'URI.

Mise en garde: Ce message a été renommé dans openflow 1.5. Si Openflow 1.4 ou une version antérieure est en cours d'utilisation, veuillez utiliser la commande Obtenir la description du compteur. Si Openflow 1.5 ou version ultérieure est en cours d'utilisation, veuillez utiliser la commande Obtenir une description de compteur.

Utilisation (Openflow1.4 ou antérieure):

Méthode GET
URI /stats/meterconfig/<dpid> [/<meter_id>]

La spécification de l'identifiant du compteur est facultative.

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath “1”
drapeaux Tous les OFPMC_ * qui s'appliquent “KBPS”
meter_id ID du compteur 1
bandes struct ofp_meter_band_header
– type Un des OFPMBT_ * “DROP”
– rate Tarif pour ce groupe 1000
– burst_size Taille des éclats 0

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/meterconfig/1
 {
  "1" : [
  {
  "flags" : [
    "KBPS"
  ],
  "meter_id" : 1 ,
  "bands" : [
    {
    "type" : "DROP" ,
    "rate" : 1000 ,
    "burst_size" : 0
    }
  ]
  }
  ]
}

Statistiques des compteurs

Obtenir les caractéristiques des compteurs statistiques du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode GET
URI /stats/metrefeatures/<dpid>

Corps du message de réponse

Attribut Description Exemple
dpid ID de Datapath “1”
max_meter Nombre maximum de mètres 256
bandes_types Images bitmap prises en charge (1 « OFPMBT_ *) [“DROP”]
capacités Images Bitmap de “ofp_meter_flags” [“KBPS”, “BURST”, “STATS”]
max_bands Bandes maximales par mètres 16
max_color Valeur de couleur maximale 8

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/meterfeatures/1
 {
  "1" : [
  {
  "max_meter" : 256 ,
  "band_types" : [
    "DROP"
  ],
  "capabilities" : [
    "KBPS" ,
    "BURST" ,
    "STATS"
  ],
  "max_bands" : 16 ,
  "max_color" : 8
  }
  ]
}

Rôle

Obtenir le rôle actuel du contrôleur auprès du commutateur.

Usage:

Méthode GET
URI /stats/role/<dpid>

Corps du message de réponse (Openflow1.4 ou antérieur):

Attribut Description Exemple
dpid ID de Datapath 1
role Un des OFPCR_ROLE_ * “EQUAL”
generation_id Identifiant de génération d'élection maître 0

Exemple d'utilisation:

$ curl -X GET http://localhost:8080/stats/role/1

Réponse (Openflow1.4 ou antérieure):

 {
  "1" : [
    {
    "generation_id" : 0 ,
    "role" : "EQUAL"
    }
  ]
}

Mettre à jour les statistiques du commutateur

Ajouter une entrée de flux

Ajouter une entrée de flux au commutateur.

Usage:

Méthode POST
URI /stats/flowentry/add

Corps du message de demande (Openflow1.3 ou antérieur):

Attribut Description Exemple
dpid ID Datapath (int) 1 (Obligatoire)
cookie Identificateur émis par le contrôleur opaque (int) 1 0
cookie_mask Masque utilisé pour restreindre les bits de cookie (int) 1 0
table_id ID de table pour mettre le flux dans (int) 0 0
idle_timeout Durée d'inactivité avant rejet (secondes) (int) 30 0
hard_timeout Temps maximum avant la mise au rebut (secondes) (int) 30 0
priority Niveau de priorité d'entrée de flux (int) 11111 0
buffer_id Paquet mis en mémoire tampon à appliquer à OFP_NO_BUFFER (int) 1 OFP_NO_BUFFER
flags Bitmap de OFPFF_ * flags (int) 1 0
match Champs à faire correspondre (dict) {“in_port”: 1} {} #wildcarded
actions Jeu d'instructions (liste de dict) [{“type”: “OUTPUT”, “port”: 2}] [] #DROP

Pour une description de la correspondance et des actions, voir Référence: Description de la correspondance et des actions.

Exemple d'utilisation (Openflow1.3 ou antérieur):

$ curl -X POST -d '{
  "dpid": 1,
  "cookie": 1,
  "cookie_mask": 1,
  "table_id": 0,
  "idle_timeout": 30,
  "hard_timeout": 30,
  "priority": 11111,
  "flags": 1,
  "match":{
    "in_port":1
  },
  "actions":[
    {
    "type":"OUTPUT",
    "port": 2
    }
  ]
 }' http://localhost:8080/stats/flowentry/add
$ curl -X POST -d '{
  "dpid": 1,
  "priority": 22222,
  "match":{
    "in_port":1
  },
  "actions":[
    {
    "type":"GOTO_TABLE",
    "table_id": 1
    }
  ]
 }' http://localhost:8080/stats/flowentry/add
$ curl -X POST -d '{
  "dpid": 1,
  "priority": 33333,
  "match":{
    "in_port":1
  },
  "actions":[
    {
    "type":"WRITE_METADATA",
    "metadata": 1,
    "metadata_mask": 1
    }
  ]
 }' http://localhost:8080/stats/flowentry/add
$ curl -X POST -d '{
  "dpid": 1,
  "priority": 44444,
  "match":{
    "in_port":1
  },
  "actions":[
    {
    "type":"METER",
    "meter_id": 1
    }
  ]
 }' http://localhost:8080/stats/flowentry/add

Pour confirmer l'enregistrement des entrées de flux, se reporter aux sections Obtenir toutes les statistiques de flux ou Obtenir les statistiques de flux filtrées par champs.

Modifier toutes les entrées de flux correspondantes

Modifier toutes les entrées de flux correspondantes du commutateur.

Usage:

Méthode POST
URI /stats/flowentry/modifier

Corps du message de demande:

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
cookie Identificateur émis par un contrôleur Opaque (int) 1 0
cookie_mask Masque utilisé pour restreindre les bits de cookie (int) 1 0
table_id ID de table pour mettre le flux dans (int) 0 0
idle_timeout Durée d'inactivité avant rejet (secondes) (int) 30 0
hard_timeout Temps maximum avant la mise au rebut (secondes) (int) 30 0
priority Niveau de priorité d'entrée de flux (int) 11111 0
buffer_id Paquet mis en mémoire tampon à appliquer à OFP_NO_BUFFER (int) 1 OFP_NO_BUFFER
flags Bitmap de OFPFF_ * flags (int) 1 0
match Champs à faire correspondre (dict) {“in_port”: 1} {} #wildcarded
actions Jeu d'instructions (liste de dict) [{“type”: “OUTPUT”, “port”: 2}] [] #DROP

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "cookie": 1,
  "cookie_mask": 1,
  "table_id": 0,
  "idle_timeout": 30,
  "hard_timeout": 30,
  "priority": 11111,
  "flags": 1,
  "match":{
    "in_port":1
  },
  "actions":[
    {
    "type":"OUTPUT",
    "port": 2
    }
  ]
 }' http://localhost:8080/stats/flowentry/modify

Modifier l'entrée de flux strictement

Modifier une entrée de flux correspondant strictement aux caractères génériques et à la priorité

Usage:

Méthode POST
URI /stats/flowentry/modify_strict

Corps du message de demande:

Attribut Description Exemple
dpid ID Datapath (int) 1 (Obligatoire)
cookie Identificateur émis par le contrôleur opaque (int) 1 0
cookie_mask Masque utilisé pour restreindre les bits de cookie (int) 1 0
table_id ID de table pour mettre le flux dans (int) 0 0
idle_timeout Durée d'inactivité avant rejet (secondes) (int) 30 0
hard_timeout Temps maximum avant la mise au rebut (secondes) (int) 30 0
priority Niveau de priorité d'entrée de flux (int) 11111 0
buffer_id Paquet mis en mémoire tampon à appliquer à OFP_NO_BUFFER (int) 1 OFP_NO_BUFFER
flags Bitmap de OFPFF_ * flags (int) 1 0
match Champs à faire correspondre (dict) {“in_port”: 1} {} #wildcarded
actions Jeu d'instructions (liste de dict) [{“type”: “OUTPUT”, “port”: 2}] [] #DROP

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "cookie": 1,
  "cookie_mask": 1,
  "table_id": 0,
  "idle_timeout": 30,
  "hard_timeout": 30,
  "priority": 11111,
  "flags": 1,
  "match":{
    "in_port":1
  },
  "actions":[
    {
    "type":"OUTPUT",
    "port": 2
    }
  ]
 }' http://localhost:8080/stats/flowentry/modify\_strict

Supprimer toutes les entrées de flux correspondantes

Supprimer toutes les entrées de flux correspondantes du commutateur.

Usage:

Méthode POST
URI /stats/flowentry/delete

Corps du message de demande :

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
cookie Identificateur émis par le contrôleur opaque (int) 1 0
cookie_mask Masque utilisé pour restreindre les bits de cookie (int) 1 0
table_id ID de table pour mettre le flux dans (int) 0 0
idle_timeout Durée d'inactivité avant rejet (secondes) (int) 30 0
hard_timeout Temps maximum avant la mise au rebut (secondes) (int) 30 0
priority Niveau de priorité d'entrée de flux (int) 11111 0
buffer_id Paquet mis en mémoire tampon à appliquer à OFP_NO_BUFFER (int) 1
out_port Port de sortie (int) 1 OFPP_ANY
out_group Groupe de sortie (int) 1 OFPG_ANY
flags Bitmap de OFPFF_ * flags (int) 1 0
match Champs à faire correspondre (dict) {“in_port”: 1} {} #wildcarded
actions Jeu d'instructions (liste de dict) [{“type”: “OUTPUT”, “port”: 2}] [] #DROP

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "cookie": 1,
  "cookie_mask": 1,
  "table_id": 0,
  "idle_timeout": 30,
  "hard_timeout": 30,
  "priority": 11111,
  "flags": 1,
  "match":{
    "in_port":1
  },
  "actions":[
    {
    "type":"OUTPUT",
    "port": 2
    }
  ]
 }' http://localhost:8080/stats/flowentry/delete

Supprimer l'entrée de flux strictement

Supprimer une entrée de flux correspondant strictement aux caractères génériques et à la priorité.

Usage:

Méthode POST
URI /stats/flowentry/delete_strict

Corps du message de demande:

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
cookie Identificateur émis par le contrôleur opaque (int) 1 0
cookie_mask Masque utilisé pour restreindre les bits de cookie (int) 1 0
table_id ID de table pour mettre le flux dans (int) 0 0
idle_timeout Durée d'inactivité avant rejet (secondes) (int) 30 0
hard_timeout Temps maximum avant la mise au rebut (secondes) (int) 30 0
priority Niveau de priorité d'entrée de flux (int) 11111 0
buffer_id Paquet mis en mémoire tampon à appliquer à OFP_NO_BUFFER (int) 1 OFP_NO_BUFFER
out_port Port de sortie (int) 1 OFPP_ANY
out_group Groupe de sortie (int) 1 OFPG_ANY
flags Bitmap de OFPFF_ * flags (int) 1 0
match Champs à faire correspondre (dict) {“in_port”: 1} {} #wildcarded
actions Jeu d'instructions (liste de dict) [{“type”: “OUTPUT”, “port”: 2}] [] #DROP

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "cookie": 1,
  "cookie_mask": 1,
  "table_id": 0,
  "idle_timeout": 30,
  "hard_timeout": 30,
  "priority": 11111,
  "flags": 1,
  "match":{
    "in_port":1
  },
  "actions":[
    {
    "type":"OUTPUT",
    "port": 2
    }
  ]
 }' http://localhost:8080/stats/flowentry/delete\_strict

Supprimer toutes les entrées de flux

Supprimer toutes les entrées de flux du commutateur spécifié avec l'ID Datapath dans l'URI.

Usage:

Méthode
URI /stats/flowentry/clear/<dpid>

Exemple d'utilisation:

$ curl -X DELETE http://localhost:8080/stats/flowentry/clear/1

Ajouter une entrée de groupe

Ajouter une entrée de groupe au commutateur.

Usage:

Méthode POST
URI /stats/groupentry/add

Corps du message de demande:

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
type Un des OFPGT_ * (chaîne) “TOUT” “TOUT”
group_id ID de groupe (int) 1 0
buckets struct ofp_bucket
– weight Poids relatif du godet (défini uniquement pour certains groupes) 0 0
– watch_port Port dont l'état détermine si ce compartiment est actif (requis uniquement pour les groupes de basculement rapide) 4294967295 OFPP_ANY
- watch_group Groupe dont l'état détermine si ce compartiment est actif (requis uniquement pour les groupes de basculement rapide) 4294967295 OFPG_ANY
– actions 0 ou plusieurs actions associées au compartiment (liste de dict) [{“type”: “OUTPUT”, “port”: 1}] [] #DROP

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "type": "ALL",
  "group_id": 1,
  "buckets": [
    {
    "actions": [
      {
        "type": "OUTPUT",
        "port": 1
      }
    ]
    }
  ]
 }' http://localhost:8080/stats/groupentry/add

Pour confirmer votre inscription au groupe, se reporter la rubrique Obtenir les statistiques de description du groupe .

Modifier une entrée de groupe

Modifier une entrée de groupe sur le commutateur.

Usage:

Méthode POST
URI /stats/groupentry/modify

Corps du message de demande:

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
type Un des OFPGT_ * (chaîne) “ALL” “ALL”
group_id ID de groupe (int) 1
buckets struct ofp_bucket
– poids Poids relatif du godet (défini uniquement pour certains groupes) 0 0
– watch_port Port dont l'état détermine si ce compartiment est actif (requis uniquement pour les groupes de basculement rapide) 4294967295 OFPP_ANY
– watch_group Groupe dont l'état détermine si ce compartiment est actif (requis uniquement pour les groupes de basculement rapide) 4294967295 OFPG_ANY
– actions 0 ou plusieurs actions associées au compartiment (liste de dict) [{“type”: “OUTPUT”, “port”: 1}] [] #DROP

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "type": "ALL",
  "group_id": 1,
  "buckets": [
    {
    "actions": [
      {
        "type": "OUTPUT",
        "port": 1
      }
    ]
    }
  ]
 }' http://localhost:8080/stats/groupentry/modify

Supprimer une entrée de groupe

Supprimer une entrée de groupe sur le commutateur.

Usage:

Méthode POST
URI /stats/groupentry/delete

Corps du message de demande:

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
group_id ID de groupe (int) 1 0

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "group_id": 1
 }' http://localhost:8080/stats/groupentry/delete

Modifier le comportement du port

Modifier le comportement du port physique.

Usage:

Méthode POST
URI /stats/portdesc/modify

Demander le corps du message:

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
port_no Numéro de port (int) 1 0
config Bitmap de OFPPC_ * flags (int) 1 0
mask Bitmap des indicateurs OFPPC_ * à modifier (int) 1 0

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "port_no": 1,
  "config": 1,
  "mask": 1
  }' http://localhost:8080/stats/portdesc/modify

Pour confirmer la description du port, se reporter à la section Obtenir une description des ports.

Ajouter une entrée de compteur

Ajouter une entrée de compteur au commutateur.

Usage:

Méthode POST
URI /stats/meterentry/add

Corps du message de demande :

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
flags Bitmap of OFPMF_ * flags (liste) [“KBPS”] [] #Vide
meter_id ID du compteur (int) 1 0
bands struct ofp_meter_band_header
– type Un parmi OFPMBT_ * (chaîne) “DROP” Aucun
– taux Tarif pour ce groupe (int) 1000 Aucun
– burst_size Taille des rafales (int) 100 Aucun

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "flags": "KBPS",
  "meter_id": 1,
  "bands": [
    {
    "type": "DROP",
    "rate": 1000
    }
  ]
 }' http://localhost:8080/stats/meterentry/add

Pour confirmer l'enregistrement du compteur, se reporter à la rubrique Obtenir les statistiques de configuration du compteur .

Modifier une entrée de compteur

Modifier une entrée de compteur au commutateur.

Usage:

Méthode POST
URI /stats/meterentry/modifier

Corps du message de demande:

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
flags Bitmap of OFPMF_ * flags (liste) [“KBPS”] [] #Vide
meter_id ID du compteur (int) 1 0
bands struct ofp_meter_band_header
– type Un parmi OFPMBT_ * (chaîne) “DROP” Aucun
– rate Taux pour ce groupe (int) 1000 Aucun
– burst_size Taille des rafales (int) 100 Aucun

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "meter_id": 1,
  "flags": "KBPS",
  "bands": [
    {
    "type": "DROP",
    "rate": 1000
    }
  ]
 }' http://localhost:8080/stats/meterentry/modify

Supprimer une entrée de compteur

Supprimer une entrée de compteur au commutateur.

Usage:

Méthode POST
URI /stats/meterentry/delete

Corps du message de demande:

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
meter_id ID du compteur (int) 1 0

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "meter_id": 1
 }' http://localhost:8080/stats/meterentry/delete

Modifier le rôle

modifier le rôle du commutateur.

Usage:

Méthode POST
URI /stats/role

Corps du message de demande:

Attribut Description Exemple Défaut
dpid ID Datapath (int) 1 (Obligatoire)
role Un des OFPCR_ROLE _ * (chaîne) “MASTER” OFPCR_ROLE_EQUAL

Exemple d'utilisation:

$ curl -X POST -d '{
  "dpid": 1,
  "role": "MASTER"
 }' http://localhost:8080/stats/role

Description de la correspondance et des actions

Description des messages de correspondance sur demande

Liste des champs de correspondance (OpenFlow1.2 ou version ultérieure):

Champ de correspondance Description Exemple
in_port Commutateur d'entrée (int) {“in_port”:7}
in_phy_port Changer le port d'entrée physique (int) {“in_phy_port”:5, “in_port”:3}
métadatas Métadonnées passées entre les tables (int ou string) {“métadatas”:12345} ou {“métadonnées”:“0x1212/0xffff”}
eth_dst Adresse de destination Ethernet (chaîne) {“eth_dst”:“aa:bb:cc:11:22:33/00:00:00:00:ff:ff”}
eth_src Adresse source Ethernet (chaîne) {“eth_src”:“aa:bb:cc:11:22:33”}
eth_type Type de trame Ethernet (int) {“eth_type”:2048}
vlan_vid ID de VLAN (int ou chaîne)
vlan_pcp Priorité VLAN (int) {“vlan_pcp”:3, “vlan_vid”:3}
ip_dscp IP DSCP (6 bits dans le champ ToS) (int) {“ip_dscp”:3, “eth_type”:2048}
ip_ecn IP ECN (2 bits dans le champ ToS) (int) {“ip_ecn”:0, “eth_type”:34525}
ip_proto Protocole IP (int) {“ip_proto”:5, “eth_type”:34525}
ipv4_src Adresse source IPv4 (chaîne) {“ipv4_src”:“192.168.0.1”, “eth_type”:2048}
ipv4_dst Adresse de destination IPv4 (chaîne) {“ipv4_dst”:“192.168.10.10/255.255.255.0”, “eth_type”: 2048}
tcp_src Port source TCP (int) {“tcp_src”:3, “ip_proto”:6, “eth_type”:2048}
tcp_dst Port de destination TCP (int) {“tcp_dst”:5, “ip_proto”:6, “eth_type”:2048}
udp_src Port source UDP (int) {“udp_src”: 2, “ip_proto”:17, “eth_type”:2048}
udp_dst Port de destination UDP (int) {“udp_dst”:6, “ip_proto”:17, “eth_type”:2048}
sctp_src Port source SCTP (int) {“sctp_src”:99, “ip_proto”:132, “eth_type”:2048}
sctp_dst Port de destination SCTP (int) {“sctp_dst”:99, “ip_proto”:132, “eth_type”:2048}
icmpv4_type Type ICMP (int) {“icmpv4_type”:5, “ip_proto”:1, “eth_type”:2048}
icmpv4_code Code ICMP (int) {“icmpv4_code”:6, “ip_proto”:1, “eth_type”:2048}
arp_op Opcode ARP (int) {“arp_op”:3, “eth_type”:2054}
arp_spa Adresse IPv4 source ARP (chaîne) {“arp_spa”:“192.168.0.11”, “eth_type”:2054}
arp_tpa Adresse IPv4 cible ARP (chaîne) {“arp_tpa”:“192.168.0.44/24”, “eth_type”:2054}
arp_sha Adresse matérielle source ARP (chaîne) {“arp_sha”:“aa:bb:cc:11:22:33”, “eth_type”:2054}
arp_tha Adresse matérielle cible ARP (chaîne) {“arp_tha”:“aa:bb:cc:11:22:33/00:00:00:00:ff:ff”, “eth_type”:2054}
ipv6_src Adresse source IPv6 (chaîne) {“ipv6_src”: “2001::aaaa:bbbb:cccc:1111”, “eth_type”:34525}
ipv6_dst Adresse de destination IPv6 (chaîne) {“ipv6_dst”: “2001::ffff:cccc:bbbb: 1111/64”, “eth_type”: 34525}
ipv6_flabel Étiquette de flux IPv6 (int) {“ipv6_flabel”:2, “eth_type”:34525}
icmpv6_type Type ICMPv6 (int) {“icmpv6_type”:3, “ip_proto”: 58, “eth_type”:34525}
icmpv6_code Code ICMPv6 (int) {“icmpv6_code”:4, “ip_proto”: 58, “eth_type”:34525}
ipv6_nd_target Adresse cible pour la découverte du voisin (chaîne) {“ipv6_nd_target”: “2001 :: ffff: cccc: bbbb: 1111”, “type_icmpv6”:135, “ip_proto”:58, “eth_type”:34525}
ipv6_nd_sll Couche de liaison source pour la découverte de voisin (chaîne)
ipv6_nd_tll Couche de liaison cible pour la découverte de voisin (chaîne) {“ipv6_nd_tll”:“aa:bb:cc:11:22:33”, “icmpv6_type”:136, “ip_proto”:58, “eth_type”:34525}
mpls_label Étiquette MPLS (int) {“mpls_label”:3, “eth_type”:34888}
mpls_tc Classe de trafic MPLS (int) {“mpls_tc”:2, “eth_type”:34888}
mpls_bos MPLS BoS bit (int) (Openflow1.3 +) {“mpls_bos”: 1, “eth_type”:34888}
pbb_isid PBB I-SID (int ou string) (Openflow1.3 +) {“pbb_isid”:5, “eth_type”:35047} ou {“pbb_isid”:“0x05/0xff”, “eth_type”:35047}
tunnel_id Métadonnées de port logique (int ou chaîne) (Openflow1.3 +) {“tunnel_id”:7} ou {“tunnel_id”:“0x07/0xff”}
ipv6_exthdr Pseudo-champ En-tête d'extension IPv6 (int ou chaîne) (Openflow1.3 +) {“ipv6_exthdr”: 3, “eth_type”: 34525} ou {“ipv6_exthdr”:“0x40/0x1F0”, “eth_type”:34525}
pbb_uca Champ de gestionnaire PBB UCA (int) (Openflow1.4 +) {“pbb_uca”:1, “eth_type”:35047}
tcp_flags Drapeaux TCP (int) (Openflow1.5 +) {“tcp_flags”:2, “ip_proto”:6, “eth_type”:2048}
actset_output Port de sortie des métadonnées du jeu d'actions (int) (Openflow1.5 +) {“actset_output”:3}
type de paquet Valeur du type de paquet (int) (Openflow1.5 +) {“packet_type”:[1, 2048]}

Masques

Certains champs peuvent être décrits avec un masque comme suit.

  • Adresse Ethernet:
"aa:bb:cc:11:22:33"
"aa:bb:cc:11:22:33/00:00:00:00:ff:ff"
  • Adresse IPv4:
"192.168.0.11"
"192.168.0.44/24"
"192.168.10.10/255.255.255.0"
  • Adresse IPv6:
"2001::ffff:cccc:bbbb:1111"
"2001::ffff:cccc:bbbb:2222/64"
"2001::ffff:cccc:bbbb:2222/ffff:ffff:ffff:ffff::0"
  • Métadonnées:
"0x1212121212121212"
"0x3434343434343434/0x01010101010101010"

Exemple de champ de correspondance d'ID de VLAN

  • Pour faire correspondre uniquement les paquets dont l'étiquette VLAN et l'ID de VLAN sont égaux à la valeur 5:
  $ curl -X POST -d '{
    "dpid": 1,
    "match":{
    "dl\_vlan": 5
    },
    "actions":[
    {
      "type":"OUTPUT",
      "port": 1
    }
    ]
   }' http://localhost:8080/stats/flowentry/add

Lorsque le champ “dl_vlan” est décrit comme une valeur décimale, le bit OFPVID_PRESENT (0x1000) est automatiquement appliqué.

  • Pour faire correspondre uniquement les paquets sans balise VLAN:
  $ curl -X POST -d '{
    "dpid": 1,
    "match":{
    "dl_vlan": "0x0000" # Describe OFPVID_NONE(0x0000)
    },
    "actions":[
    {
      "type":"OUTPUT",
      "port": 1
    }
    ]
   }' http://localhost:8080/stats/flowentry/add
  • Pour faire correspondre uniquement les paquets avec une balise VLAN, quelle que soit sa valeur:
  $ curl -X POST -d '{
    "dpid": 1,
    "match":{
    "dl_vlan": "0x1000/0x1000" # Describe OFPVID_PRESENT(0x1000/0x1000)
    },
    "actions":[
    {
      "type":"OUTPUT",
      "port": 1
    }
    ]
   }' http://localhost:8080/stats/flowentry/add
  • Pour faire correspondre uniquement les paquets dont l'étiquette VLAN et l'ID de VLAN sont égaux à la valeur 5:
  $ curl -X POST -d '{
    "dpid": 1,
    "match":{
    "dl_vlan": "0x1005" # Describe sum of VLAN-ID(e.g. 5) | OFPVID_PRESENT(0x1000)
    },
    "actions":[
    {
      "type":"OUTPUT",
      "port": 1
    }
    ]
   }' http://localhost:8080/stats/flowentry/add

Lorsqu'on utilise les descriptions d'OpenFlow1.2 ou version ultérieure, décrire le champ “dl_vlan” en tant que valeur de chaîne hexadécimale, et le bit OFPVID_PRESENT (0x1000) N'EST PAS automatiquement appliqué.

Description des messages Actions sur demande

Liste des actions (OpenFlow1.2 ou ultérieur):

actions description Exemple
OUTPUT Paquet de sortie du “port” {“type”:“OUTPUT”, “port”:3}
COPY_TTL_OUT Copier TTL vers l'extérieur {“type”:“COPY_TTL_OUT”}
COPY_TTL_IN Copier TTL vers l'intérieur {“type”:“COPY_TTL_IN”}
SET_MPLS_TTL Définir MPLS TTL avec “mpls_ttl” {“type”:“SET_MPLS_TTL”, “mpls_ttl”:64}
DEC_MPLS_TTL Décrémenter MPLS TTL {“type”:“DEC_MPLS_TTL”}
PUSH_VLAN Pousser une nouvelle balise VLAN avec “ethertype” {“type”:“PUSH_VLAN”, “ethertype”:33024}
POP_VLAN Pop la balise VLAN externe {“type”:“POP_VLAN”}
PUSH_MPLS Pousser une nouvelle balise MPLS avec “ethertype” {“type”:“PUSH_MPLS”, “ethertype”:34887}
POP_MPLS Pop la balise MPLS externe avec “ethertype” {“type”:“POP_MPLS”, “ethertype”:2054}
SET_QUEUE Définir l'ID de la file d'attente à l'aide de “queue_id” lors de la sortie sur un port {“type”:“SET_QUEUE”, “queue_id”:7}
GROUPE Appliquer le groupe identifié par “group_id” {“type”:“GROUP”, “id_groupe”:5}
SET_NW_TTL Définir IP TTL avec “nw_ttl” {“type”:“SET_NW_TTL”, “nw_ttl”:64}
DEC_NW_TTL Décrémenter IP TTL {“type”:“DEC_NW_TTL”}
SET_FIELD Définir un “champ” à l'aide de “valeur” (l'ensemble des mots-clés disponibles pour “champ” est identique au champ de correspondance) Voir Exemple d'action set-field
PUSH_PBB Pousser une nouvelle étiquette de service PBB avec “ethertype” (Openflow1.3 +) {“type”:“PUSH_PBB”, “ethertype”:35047}
POP_PBB Pop le numéro de service externe PBB (Openflow1.3 +) {“type”:“POP_PBB”}
COPY_FIELD Copier la valeur entre l'en-tête et le registre (Openflow1.5 +) {“type”:“COPY_FIELD”, “n_bits”:32, “src_offset”:1, “dst_offset”:2, “src_oxm_id”:“eth_src”, “dst_oxm_id”:“eth_dst”}
MÈTRE Appliquer un compteur identifié par “meter_id” (Openflow1.5 +) {“type”:“METER”, “meter_id”:3}
EXPÉRIMENTATEUR Action extensible pour l'expérimentateur (champ “base64” ou “ascii” sur “type_données”) {“type”:“EXPERIMENTER”, “expérimentateur”:101, “données”:“AAECAwQFBgc =”, “type_données”:“base64”}
GOTO_TABLE (Instruction) Configurer la table suivante identifiée par “table_id” {“type”:“GOTO_TABLE”, “table_id”:8}
WRITE_METADATA (Instruction) Configurer le champ de métadonnées en utilisant “métadonnées” et “masque de métadonnées” {“type”:“WRITE_METADATA”, “métadonnées”:0x3, “métadata_mask”:0x3}
MÈTRE (Instruction) Appliquer un compteur identifié par “meter_id” (obsolète dans Openflow1.5) {“type”:“METER”, “meter_id”:3}
WRITE_ACTIONS (Instruction) Écrire l'action (les actions) dans le jeu d'actions datapath. {“type”:“WRITE_ACTIONS”, actions “:{{” type “:” POP_VLAN “,}, {” type “:” OUTPUT “,” port “:2}]}
CLEAR_ACTIONS (Instruction) Efface toutes les actions du jeu d'actions datapath. {“type”:“CLEAR_ACTIONS”}

Exemple d'action set-field

Pour définir l'ID de VLAN sur une trame étiquetée non-VLAN:

$ curl -X POST -d '{
  "dpid": 1,
  "match":{
    "dl_type": "0x8000"
  },
  "actions":[
    {
    "type": "PUSH_VLAN",   # Push a new VLAN tag if a input frame is non-VLAN-tagged
    "ethertype": 33024   # Ethertype 0x8100(=33024): IEEE 802.1Q VLAN-tagged frame
    },
    {
    "type": "SET_FIELD",
    "field": "vlan_vid",   # Set VLAN ID
    "value": 4102    # Describe sum of vlan_id(e.g. 6) | OFPVID_PRESENT(0x1000=4096)
    },
    {
    "type": "OUTPUT",
    "port": 2
    }
  ]
 }' http://localhost:8080/stats/flowentry/add
reseau/ryu-ofctl-rest.txt · Last modified: 2022/05/09 14:59 by 127.0.0.1