orm@doc-tcpip.org

Erstellt: September 2001 - Letzte Modifikation: März 2014

[ Main | Local ]


Eigenschaften des Network File System Version 4

Vortrags-Mitschrift

Warum?

 
- Filesharing im Internet
==> Starke Security, Firewalls, Globaler Namensraum
    hohe Latenz von WANs (daher lokales Caching und
    Delegation nötig).
- Neue Architekturen (NAS, SAN)

NFSv2

 
1985, stateless, 8K Transfer Limit, 4 GB max. Datei,
synchrone Schreiboperation
Viele, einzelne RPC Aufrufe.

NFSv3

 
1993, 64bit Files, kein Transfer Limit, optimiertes
Schreibprotokoll
RPC Aufrufe teilweise optimiert, zusammengefasst.
Sowohl 2 wie auch 3 nutzten viele Ports.
(Portmap 111, NFS 2049, Mount, Lock, Status dynamisch.
Teilweise UDP, teilweise TCP)
Das ist nicht kompatibel zu einer Firewall.

NFSv3 brachte erhebliche Performancevorteile gegenüber NFSv2:
Latenzreduktion durch RPC Prozeduren wie READDIR_PLUS.
Maximale Größe des Datenpaketes: 32 KByte, Dateigrößen über
2 GB.

NFS war stateless, also ein zustandsloses Protokoll.
(File)Locking wurde im Nachgang durch ein Hilfsprotokoll
Network Locking Manager NLM implementiert.

Das eigentliche Mounten wurde über das Mount-Protokoll
gemacht (Anforderung des Initial Filehandle beim Mount)

NFSv4 nutzt nur noch den Port 2049 TCP.

NFSv4

 
Neue "COMPOUND" RPC Prozeduren:
READDIR (das war READDIR_PLUS in NFSv3)
CREATE (MKDIR; MKNOD; SYMLINK)
OPEN (Bei jeden Öffnen wird die "stateid" (128 bit) angesprochen,
in der der aktuelle open- bzw. lock Zustand der Datei gespeichert ist).
CLOSE 

Der Client registriert sich beim Server über eine "clientid", die
für eine bestimmte Zeit (Lease Time) vergeben wird. Diese Lease Time
wird mit allen Operationen, die den Zustand ändern, erneuert.
Liegt nichts an, so ist es Aufgabe des Client, regelmäßig per RENEW
die clientid auffrischen zu lassen. Ansonsten löscht der Server die
Zustandsinformation und geht vom Abbruch der Verbindung aus.

Callback-RPC: Kann der Server an den Client schicken, um über Zustandsänderungen
(Beispiel die Rücknahme einer Delegation) zu informieren.

Der separate NLM und das separate Mount-Protokoll sind 
abgeschafft, der Portmapper sowie die Dämonen rpc.lockd und
rpc.statd gibt es nicht mehr.

Implementiert verschiedene Security-Methoden.
Das Protokoll verhandelt die Nutzung.
Exports können einer Methode/Sicherheitsstufe
zugeordnet werden.

Sichere RPC Calls sind über RPCSEC_GSS API möglich.

Kerberos V5 und LIPKEY/SPKM3 (Low Infrastructure 
Public Key Mechanism)
 
Das Filesystem ist nicht mehr so stark UNIX-zentriert:
Unix Datei Attribute: Read, Write, Execute, Sticky-Bit,
SUID, SGID
Windows Datei Attribute: Hidden, System, Read-Only, Archive
und ein paar mehr (File Locking).
 
NFSv4 stellt erweiterbare, nummerische Attribute zur
Verfügung. Dabei wird in die Gruppen "Mandatory" und
"Recommended" eingeteilt. 
Es gibt ACLs.

NFSv4 ist Internet-tauglich:

 
TCP
ein Port 2049
Delegation
COMPOUND Prozedur, weniger Pakete hin und her
UTF-8 für alle Strings (Internationalisiert)
Benutzer-Identifikation durch Strings user@domain.org
(ersetzt Unix UID/GID)

Im Prinzip gibt es nur noch zwei RCP-Prozeduren:
NULL und COMPOUND.

COMPOUND fasst eine Reihe von Operationen in einem
Request/Reply zusammen - das verbessert die Latenz.
Die COMPOUND Prozedur ist nicht mehr atomar. Tritt 
ein Fehler in einer Operation auf, so scheitert die 
gesamte Prozedur. Das Ergebnis wird per COMPOUND Reply
zurückgegeben, und die Analyse obliegt dem Client.

Multikomponenten Lookup: Der Client kann sich für 
komplette Pfade die Struktur ausgeben lassen (früher
mußte der Pfad aufgesplittet und einzeln abgefragt werden.

Delegation: Wenn möglich, wird die Gewalt über ein File
an den Client übertragen. Für den Zeitraum des Lease
ist dann kein Check der Gültigkeit der Daten im Cache 
nötig.

(etwa wie "oportunistic locks" (OpLocks) im CIFS - eigentlich
ein Caching Mechanismus. Allerdings
muß dort ein Oplock vom Client angefordert werden. Die
Delegation für der Server durch.)

(Der NLM kannte nur "advisory locks", also freiwillige Sperren.
Außerdem waren diese Locks nicht gesichert, blieben also bei
Netz/Client Ausfällen hängen.)

Der NFSv4 Server ist zustandsbehaftet, kann also mit 
der "stateid" sogenannte "mandatory locks" setzen.

Über die Lease-Zeiten wird sichergestellt, daß keine Locks
hängenbleiben.

Es gibt eine "sequenz_id", die sicherstellt, daß auch doppelte
Requests abgefangen werden.

Filehandle:
wurde früher vom Server generiert und dem Client zur Verfügung gestellt.

 
Vergleich NFSv3 vs. NFSv4 Operationen  

NFSv3
Client      <-->          Server
LOOKUP      <-->
ACCESS      <-->
READ        <-->   

NFSv4
PUTFH    |
LOOKUP   |
GETFH    |  COMPOUND  |    <-->
GETATTR  |  
OPEN     |
READ     |

 
Ein einziger Server-Namensraum
Ein Client kann zu jedem exportierten Filesystem gehen.
 
Delegation:
Der Server kann Aufgaben delegieren (an den Client)
Client                                Server
SETCLIENTID         <-->              Callback/Delegate
OPEN                <-->
READ                <-->
LOCK    <
WRITE   <
LOCKU   <  Macht der Client im Auftrag des Servers
CLOSE   <
OPEN    <
CLOSE              <-->
WRITE              <-->
DELEGRETURN        <-->
 
Konzepte für Migration und Replikation
Wenn zB. der NFS Server umzieht:

Client                         Server-alt
OPEN            -->
                <--           NFS4ERR_MOVED
GETATTR(fs_location) -->    
                <--           new server

state recovery  -->           Server-neu
Open            -->
 
Alter und Neuer Server tauschen den State 
über ein privates Protokoll aus.
 
RFC:
NFSv4   3010
NFSv4   3530
Kerberos V5 1510
Kerberos GSSAPI         1964
SPKM-3/LIPKEY 2847
RPC 1831
XDR 1832
RPCSEC_GSS 2203
GSSAPI     2743

Webadressen:
www.citi.umich.edu/projects/nfsv4
nfs.sourceforge.net
www.nfsv4.org
IETF 
www.nfsconf.com
 
Netzwerke/Busbandbreite
Fast Ethernet ist deutlich langsamer als der Bus
der Maschine.
Gigabit kommt in die Nähe.
10 Gig Ethernet ist schneller als der Maschinenbus.

DMA/RDMA
DMA Direct Memory Access
RDMA Remote ...
Direkter Datentransfer zwischen Hauptspeichern, ohne
das die CPU mitwirkt.
Erfordert neue Netzwerkkarten (RDMA NIC).

Es ist leicht, die Daten auf der einen Seite zum
Senden vorzubereiten (Header und Daten der Karte
geben) - das kann eine normale Karte.

Schwierig ist das direkte Schreiben auf dem entfernten
Rechner. Das geht nur mit spezieller HW (Abtrennen
der Header, finden der Speicheradresse, einkopieren).

RDMA bringt hohe Bandbreiten, große Transfereinheiten
(mehr als 1 KB) und niedrige Latenzen, wenn die Rechner
in einem lokalen Netz stehen.

Beispiele:
Emulex VI/TCP
RDDP (RDMA via Direct Data Placement) - SCTP, TCP
Infiniband
Myrinet
Fibre Channel
CLan

DAFS Direct Access FS
von Network Appliance
Basiert auf NFSv4, eigenes API, lokales Filesharing

RDMA wäre ein neues "Transportprotokoll" auf RPC Ebene,
neben UDP/TCP:

NFS | NLM | ACL
RPC/XDR
RDMA        UDP | TCP
 |             IP
 |              |------------------------------   Remote Host
 ----------------------------------------------      

[ Main | Local ]

[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]

Copyright 2001-2021 by Orm Hager - Es gilt die GPL
Feedback bitte an: Orm Hager (orm@doc-tcpip.org )