Differences between revisions 2 and 4 (spanning 2 versions)
Revision 2 as of 2009-04-13 08:22:55
Size: 1706
Editor: anonymous
Comment:
Revision 4 as of 2009-05-26 09:18:23
Size: 2831
Editor: lukisi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
Queste classi forniscono metodi per la gestione della routing table vera e propria del kernel e di altri aspetti di rete legati al kernel.

Nel package ntk.network, inoltre, è presente il [[../ModuloInet|modulo inet]].

==== Specializzazione di una singola piattaforma ====
Line 11: Line 16:
In conclusione, basta lo statement '''{{{from ntk.network import NICManager, Route}}}''' per avere accesso a:
 . una istanza della classe {{{NIC}}} per ogni scheda di rete da gestire con Netsukuku;
 . una riferimento alla classe {{{Route}}} con i metodi statici adatti alla propria piattaforma.

==== Metodi ====
Line 13: Line 23:
I metodi delle classi NIC sono:
 * '''up''' per "tirare su" l'interfaccia
 * '''down''' per "tirare giu" l'interfaccia
 * '''show''' per visualizzare informazioni sullo stato dell'interfaccia
 * '''address''' è una property che legge/imposta l'indirizzo dell'interfaccia
 * '''is_active''' è una readonly property che dice se l'interfaccia è attiva
 * '''multicast''' è una property che legge/imposta l'abilitazione al multicast
 * '''filtering''' '''''TODO:''' A cosa serve? Inoltre se gestisce il "reverse path filtering" perché chiamarla solo filtering?''

I metodi delle classi Route sono statici. Essi sono:
 * '''add(ip, cidr, dev=None, gateway=None)''' per aggiungere una route
 * '''change(properties)''' per modificare le proprietà di una route
 * '''delete(ip, cidr, dev=None, gateway=None)''' per rimuovere una route
 * '''flush()''' Flushes all routes
 * '''flush_cache()''' Flushes cache
 * '''ip_forward(enable)''' per abilitare/disabilitare l'ip forwarding
Line 14: Line 41:

In conclusione, basta lo statement '''{{{from ntk.network import NICManager, Route}}}''' per avere accesso a:
 . una istanza della classe {{{NIC}}} per ogni scheda di rete da gestire con Netsukuku;
 . una istanza della classe {{{Route}}}.

Queste classi forniscono metodi per la gestione della routing table vera e propria del kernel e di altri aspetti di rete legati al kernel.

Nel package ntk.network, inoltre, è presente il [[../ModuloInet|modulo inet]].

Il package network

Nel package ntk.network ci sono (nel modulo interfaces) le classi base BaseNIC e BaseRoute, che sono usate come classi base per le classi NIC e Route specifiche della piattaforma usata. Al momento è supportata la piattaforma linux.

Queste classi forniscono metodi per la gestione della routing table vera e propria del kernel e di altri aspetti di rete legati al kernel.

Nel package ntk.network, inoltre, è presente il modulo inet.

Specializzazione di una singola piattaforma

Quando si accede al package ntk.network, automaticamente (nel modulo __init__.py):

  • viene riconosciuta la piattaforma,
  • viene importato in ntk.network.backend il modulo ntk/network/<nome_piattaforma>/adapt.py,

  • viene fatto un alias ntk.network.NIC e ntk.network.Route verso le relative classi (altrimenti ntk.network.backend.Route...)

  • viene definita la classe NICManager.

In conclusione, basta lo statement from ntk.network import NICManager, Route per avere accesso a:

  • una istanza della classe NIC per ogni scheda di rete da gestire con Netsukuku;

  • una riferimento alla classe Route con i metodi statici adatti alla propria piattaforma.

Metodi

Nelle classi BaseNIC e BaseRoute sono previsti una serie di metodi e attributi standard, che se non vengono implementati nelle classi NIC e Route specifiche della piattaforma dinamicamente caricate, lanciano l'eccezione NotImplementedError.

I metodi delle classi NIC sono:

  • up per "tirare su" l'interfaccia

  • down per "tirare giu" l'interfaccia

  • show per visualizzare informazioni sullo stato dell'interfaccia

  • address è una property che legge/imposta l'indirizzo dell'interfaccia

  • is_active è una readonly property che dice se l'interfaccia è attiva

  • multicast è una property che legge/imposta l'abilitazione al multicast

  • filtering TODO: A cosa serve? Inoltre se gestisce il "reverse path filtering" perché chiamarla solo filtering?

I metodi delle classi Route sono statici. Essi sono:

  • add(ip, cidr, dev=None, gateway=None) per aggiungere una route

  • change(properties) per modificare le proprietà di una route

  • delete(ip, cidr, dev=None, gateway=None) per rimuovere una route

  • flush() Flushes all routes

  • flush_cache() Flushes cache

  • ip_forward(enable) per abilitare/disabilitare l'ip forwarding

Nelle implementazioni linux, queste classi usano il comando ip (con le opzioni link, route, ...) e alcuni files di sistema come /proc/sys/net/ipv4/ip_forward, /proc/sys/net/ipv4/conf/eth0/rp_filter, ...

Netsukuku/ita/PackageNetwork (last edited 2009-05-26 09:18:23 by lukisi)