#LyX 2.0 created this file. For more info see http://www.lyx.org/
\lyxformat 413
\begin_document
\begin_header
\textclass beamer
\begin_preamble
\usetheme{Warsaw}
% or ...
\setbeamercovered{transparent}
% or whatever (possibly just delete it)
\end_preamble
\use_default_options false
\maintain_unincluded_children false
\language ngerman
\language_package default
\inputencoding auto
\fontencoding global
\font_roman times
\font_sans default
\font_typewriter default
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry true
\use_amsmath 2
\use_esint 0
\use_mhchem 1
\use_mathdots 1
\cite_engine basic
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\use_refstyle 0
\index Stichwortverzeichnis
\shortcut idx
\color #008000
\end_index
\secnumdepth 2
\tocdepth 2
\paragraph_separation indent
\paragraph_indentation default
\quotes_language german
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Title
net2o: Fort(h)schritte
\begin_inset Argument
status open
\begin_layout Plain Layout
net2o
\end_layout
\end_inset
\end_layout
\begin_layout Author
Bernd Paysan
\end_layout
\begin_layout Date
Forth--Tagung 2011, Goslar
\end_layout
\begin_layout BeginFrame
Outline
\end_layout
\begin_layout Standard
\begin_inset CommandInset toc
LatexCommand tableofcontents
\end_inset
\end_layout
\begin_layout EndFrame
\end_layout
\begin_layout Section
Motivation
\end_layout
\begin_layout Subsection
Jetzt doch Semi--Sabbatical
\end_layout
\begin_layout BeginFrame
Hirntraining, um wieder richtig in Form zu kommen
\end_layout
\begin_layout Itemize
Ohne Aufgabe kein Spaß im Leben
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Der Frust im Job hat sich so zugespitzt, dass ich gegangen bin --- Sabbatical!
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Wieder Status--Report und Todo--Liste
\end_layout
\begin_layout EndFrame
\end_layout
\begin_layout Subsection
Geändert: Packet Header
\end_layout
\begin_layout BeginFrame
Geändert: Packet Header
\end_layout
\begin_layout Standard
\align center
\begin_inset Tabular
<lyxtabular version="3" rows="7" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="top" width="0">
<column alignment="center" valignment="top" width="0">
<row>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\end_layout
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
Size
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
Flags
\end_layout
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
2
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
Path
\end_layout
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
2/8
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
Address
\end_layout
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
2/8
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
Junk
\end_layout
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
0/8
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
Data
\end_layout
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
32/64/128/256/512/1k/2k/4k
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
checksum
\end_layout
\end_inset
</cell>
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\emph on
0/8
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename ../../../doc/euroforth2009/internet-2.0/header64.fig
lyxscale 50
scale 25
\end_inset
\end_layout
\begin_layout Standard
\align center
\begin_inset Graphics
filename ../../../doc/euroforth2009/internet-2.0/header16.fig
lyxscale 50
scale 25
\end_inset
\end_layout
\begin_layout EndFrame
\end_layout
\begin_layout Section
Implementierungs--Status
\end_layout
\begin_layout BeginFrame
Ein Anfang ist gemacht
\end_layout
\begin_layout Itemize
net2o über UDP (IPv4/IPv6) als
\begin_inset Quotes gld
\end_inset
physical layer
\begin_inset Quotes grd
\end_inset
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
UDP stellt ein einfaches Interface zur Verfügung, das auch viele Verbindungen
gleichzeitig beherrscht.
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
IPv4 komplett, IPv6 bisher nur ohne Packet fragmentation
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Zwei Teile: Packet--Handler und Kommando--Interpreter
\end_layout
\begin_layout EndFrame
\end_layout
\begin_layout Subsection
Datenstrukturen
\end_layout
\begin_layout BeginFrame
Switching
\end_layout
\begin_layout Itemize
Ein Hash wird benutzt, um IP--Addressen zu switchen: Hash=Prefix
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Noch zu tun: Kolissionen mit längerem Prefix vermeiden
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Prefixgranularität: Byte
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\begin_layout Description
MSB=0 Direkt routebar
\end_layout
\begin_layout Description
MSB=1 Längerer Prefix, nächstes Byte angucken
\end_layout
\end_deeper
\begin_layout EndFrame
\end_layout
\begin_layout BeginFrame
Shared Memory
\end_layout
\begin_layout Itemize
Map von Adresse zum Kontext funktioniert
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Context enthält
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\begin_layout Itemize
Returnaddresse
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Commando--Buffer
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
cryptographic keys
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Data&Code Maps
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Achnowledge--Informationen
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
und noch mehr (noch nicht fertig)
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\end_deeper
\begin_layout EndFrame
\end_layout
\begin_layout BeginFrame
Kommandos
\end_layout
\begin_layout Itemize
UTF--8--encodedete Kommandos: Einfaches ist ASCII, ein Byte, komplexeres
kann länger sein
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Kommandos in 8--Byte--Blöcke gepackt
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Literals (8 Bytes) und Strings in Kommandostrom eingebaut
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Kommando--Assembler erlaubt direktes Einbinden in normalen Forth--Code
\end_layout
\begin_layout EndFrame
\end_layout
\begin_layout Subsection
Was schon funktioniert
\end_layout
\begin_layout BeginFrame
Testcase
\end_layout
\begin_layout ExampleBlock
\begin_inset ERT
status open
\begin_layout Plain Layout
{
\end_layout
\end_inset
Server loop
\begin_inset ERT
status open
\begin_layout Plain Layout
}
\end_layout
\end_inset
\end_layout
\begin_deeper
\begin_layout LyX-Code
init-server
\end_layout
\begin_layout LyX-Code
server-loop
\end_layout
\end_deeper
\begin_layout Pause
\end_layout
\begin_layout ExampleBlock
\begin_inset ERT
status open
\begin_layout Plain Layout
{
\end_layout
\end_inset
Debugging output
\begin_inset ERT
status open
\begin_layout Plain Layout
}
\end_layout
\end_inset
\end_layout
\begin_deeper
\begin_layout LyX-Code
init-client
\end_layout
\begin_layout LyX-Code
s
\begin_inset Quotes erd
\end_inset
localhost
\begin_inset Quotes erd
\end_inset
net2o-udp insert-ipv4
\end_layout
\begin_layout LyX-Code
constant lserver
\end_layout
\begin_layout LyX-Code
net2o-code s
\begin_inset Quotes erd
\end_inset
This is a test
\begin_inset Quotes erd
\end_inset
$, type
\end_layout
\begin_layout LyX-Code
'!' char, emit cr end-code
\end_layout
\begin_layout LyX-Code
lserver 0 send-cmd
\end_layout
\end_deeper
\begin_layout BeginFrame
Testcase 2
\end_layout
\begin_layout ExampleBlock
\begin_inset ERT
status open
\begin_layout Plain Layout
{
\end_layout
\end_inset
Datei--Transfer
\begin_inset ERT
status open
\begin_layout Plain Layout
}
\end_layout
\end_inset
\end_layout
\begin_deeper
\begin_layout LyX-Code
net2o-code new-context
\end_layout
\begin_layout LyX-Code
$80000 lit, $80000 lit, new-map
\end_layout
\begin_layout LyX-Code
$10000 lit, $1000 lit, new-code-map
\end_layout
\begin_layout LyX-Code
$80000 lit, $80000 lit, new-data
\end_layout
\begin_layout LyX-Code
$10000 lit, $1000 lit, new-code
\end_layout
\begin_layout LyX-Code
s" net2o.fs" $, r/o lit, 0 lit, open-file
\end_layout
\begin_layout LyX-Code
s" file size: " $, type 0 lit, file-size .
cr
\end_layout
\begin_layout LyX-Code
0 lit, slurp-chunk send-chunks
\end_layout
\begin_layout LyX-Code
0 lit, close-file
\end_layout
\begin_layout LyX-Code
s" doc/internet-2.0.pdf" $, r/o lit, 0 lit, open-file
\end_layout
\begin_layout LyX-Code
s" file size: " $, type 0 lit, file-size .
cr
\end_layout
\begin_layout LyX-Code
0 lit, slurp-chunk send-chunks
\end_layout
\begin_layout LyX-Code
0 lit, close-file
\end_layout
\begin_layout LyX-Code
end-code
\end_layout
\begin_layout LyX-Code
lserver 0 send-cmd
\end_layout
\end_deeper
\begin_layout BeginFrame
Testcase 3
\end_layout
\begin_layout ExampleBlock
\begin_inset ERT
status open
\begin_layout Plain Layout
{
\end_layout
\end_inset
Client Loop
\begin_inset ERT
status open
\begin_layout Plain Layout
}
\end_layout
\end_inset
\end_layout
\begin_deeper
\begin_layout LyX-Code
$80000 $80000 n2o:new-map
\end_layout
\begin_layout LyX-Code
$10000 $1000 n2o:new-code-map
\end_layout
\begin_layout LyX-Code
$80000 $80000 n2o:new-data
\end_layout
\begin_layout LyX-Code
$10000 $1000 n2o:new-code
\end_layout
\begin_layout LyX-Code
$80000 $80000 net2o:unacked
\end_layout
\begin_layout LyX-Code
client-loop
\end_layout
\end_deeper
\begin_layout EndFrame
\end_layout
\begin_layout Section
Todo-List
\end_layout
\begin_layout Subsection
Flusskontrolle: Zuverlässigkeit und Bandbreite
\end_layout
\begin_layout BeginFrame
Flusskontrolle
\end_layout
\begin_layout Itemize
UDP ist per Definition unzuverlässig
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Zuverlässigkeit durch Resend--Kommandos --- größtenteils implementiert.
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Flusskontrollen--Idee: PLL--basiert, Auswertung der
\begin_inset Formula $\Delta t$
\end_inset
s ist eingebaut, Senderlimitierung fehlt noch.
\end_layout
\begin_layout EndFrame
\end_layout
\begin_layout Subsection
Cryptography
\end_layout
\begin_layout BeginFrame
Cryptography
\end_layout
\begin_layout Itemize
Ellyptic Curve Cryptography: Dan Bernsteins NaCl--Library wird verwendet
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
NaCl hat zwar einen brauchbaren Stream Cipher, aber noch keinen Hash ---
doch Wurstkessel?
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Verschlüsselung überall ist wichtig --- die Alternative ist das chinesische
Internet
\end_layout
\begin_layout EndFrame
\end_layout
\begin_layout Subsection
Browser
\end_layout
\begin_layout BeginFrame
Presentation/Browser
\end_layout
\begin_layout Itemize
Typesetting engine
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Bilder, Audio, Video einbetten --- aber keine Plugins!
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Scripting vermeiden, wo's geht, z.B.
sollte Aggregation aus Seitenteilen schon eine Grundfunktion sein
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Events beim Server registrieren statt ständiges Pollen
\end_layout
\begin_layout Section*
Summary
\end_layout
\begin_layout BeginFrame
Summary
\end_layout
\begin_layout Itemize
Es gibt schon fast 1000 Zeilen Code
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Immer noch viel zu tun, aber dafür jetzt auch mehr Zeit
\end_layout
\begin_deeper
\begin_layout Pause
\end_layout
\end_deeper
\begin_layout Itemize
Wenn's fertig ist: RFC, IETF--Diskussionen, Präsentation auf Netzwerk--orientier
ten Konferenzen
\end_layout
\begin_layout EndFrame
\end_layout
\begin_layout Section*
\start_of_appendix
Appendix
\end_layout
\begin_layout Subsection*
For Further Reading
\end_layout
\begin_layout BeginFrame
\begin_inset ERT
status open
\begin_layout Plain Layout
[allowframebreaks]
\end_layout
\end_inset
For Further Reading
\end_layout
\begin_layout Bibliography
\labelwidthstring Literaturverzeichnis
\begin_inset CommandInset bibitem
LatexCommand bibitem
key "In20"
\end_inset
Bernd Paysan
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
newblock
\end_layout
\end_inset
\emph on
Internet 2.0
\emph default
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
newblock
\end_layout
\end_inset
\begin_inset Flex URL
status open
\begin_layout Plain Layout
http://www.jwdt.com/~paysan/internet-2.0.html
\end_layout
\end_inset
\end_layout
\begin_layout EndFrame
\end_layout
\end_body
\end_document