orm@doc-tcpip.org | Erstellt: September 2001 - Letzte Modifikation: März 2014 |
- Filesharing im Internet ==> Starke Security, Firewalls, Globaler Namensraum hohe Latenz von WANs (daher lokales Caching und Delegation nötig). - Neue Architekturen (NAS, SAN)
1985, stateless, 8K Transfer Limit, 4 GB max. Datei, synchrone Schreiboperation Viele, einzelne RPC Aufrufe.
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.
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.
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 ----------------------------------------------
[ 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