A First Example: The Bump in the Wire
INF5061:
Multimedia data communication using network processors
A First Example:
The Bump in the Wire
9/9 - 2005
Using IXP2400
Programming Model
! Packet flow illustration for IP forwarding
IP packet
ARP
ARP and
route table
mgr
scheduler
MAC and
route
lookup
queue
manager
XScale
microengines
input
ports
RX
microblock
INF5061 – multimedia data communication using network processors
TX
microblock
output
ports
2005 Carsten Griwodz & Pål Halvorsen
Programming Model
head
tail
logical mapping
linked list
metadata
queue
Scratch rings
data buffers
scheduler
XScale
microengines
input
ports
RX
microblock
queue
manager
INF5061 – multimedia data communication using network processors
TX
microblock
output
ports
2005 Carsten Griwodz & Pål Halvorsen
Programming Model
Threads
scheduler
XScale
microengines
input
ports
RX
microblock
queue
manager
TX
microblock
output
ports
Hardware contexts
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Framework
! uclo
"
"
Microengine loader
Necessary to load your microengine code into the microengines at runtime
! hal
"
"
"
Hardware abstraction layer
Mapping of physical memory into XScale processes’ virtual address space
Functions starting with hal
! ossl
"
"
"
Operating system service layer
Limited abstraction from hardware specifics
Functions starting with ix_
! rm
"
"
"
Resource manager
Layered on top of uclo and ossl
Memory and resource management
#
#
"
all memory types and their features
IPC, counters, hash
Functions starting with ix_
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Bump in the Wire
Bump in the Wire
Count web packets, count ICMP packets
Internet
129.240.66.55
INF5061 – multimedia data communication using network processors
129.230.2.5
2005 Carsten Griwodz & Pål Halvorsen
Packet Headers and
Encapsulation
Ethernet
48 bit address configured to an
interface on the NIC on the receiver
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Destination Address
|
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
|
Source address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Frame type
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
describes content of ethernet frame,
e.g., 0x0800 indicates an IP datagram
INF5061 – multimedia data communication using network processors
48 bit address configured to an
interface on the NIC on the sender
2005 Carsten Griwodz & Pål Halvorsen
Internet Protocol version 4 (IPv4)
indication of the abstract parameters of the
quality of service desired – somehow treat
indicates the format of the internet header, i.e., version 4
high precedence traffic as more important –
length of the internet header in 32 bit words, and thus
tradeoff between low-delay, high-reliability, and
points to the beginning of the data (minimum value of 5) high-throughput – NOT used, bits now reused
first zero, fragments allowed
and last fragment
1
identifying
value to aid
assembly of
fragments
disable a packet
to circulate
forever,decrease
value by at least
1 in each node –
discarded if 0
0
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service|
Total Length
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identification
|Flags|
Fragment Offset
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live |
Protocol
|
Header Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Source Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Destination Address
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Options
|
Padding
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
indicates used transport
layer protocol
32-bit address fields. May be configured
differently from small to large networks
datagram length
(octets) including
header and data allows the length
of 65,535 octets
indicate where
this fragment
belongs in
datagram
checksum on the
header only – TCP,
UDP over payload.
Since some header
fields change(TTL),
this is recomputed
and verified at
each point
options may extend the header – indicated by IHL. If the options do
not end on a 32-bit boundary, the remaining fields are padded in the
padding field (0’s)
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Internet Control Message Protocol (ICMPv4)
Type of the control msg, including
echo request (8) and echo reply (0)
Refinement
Checksum for the
ICMP header only
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Type
|
Code
|
header checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
data
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
type-specific arbitrary length data
ICMP Echo Request
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
8
|
0
|
header checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
identifier
|
sequence number
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
data
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Optional identifier,
chosen by sender, echoed by receiver
INF5061 – multimedia data communication using network processors
Optional sequence number,
chosen by sender, echoed by receiver
2005 Carsten Griwodz & Pål Halvorsen
UDP
port to identify the
sending application
port to identify
receiving application
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Source Port
|
Destination Port
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Length
|
Checksum
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
specifies the total length of the UDP
datagram in octets
INF5061 – multimedia data communication using network processors
contains a 1’s complement checksum over
UDP packet and an IP pseudo header with
source and destination address
2005 Carsten Griwodz & Pål Halvorsen
TCP
code bits: urgent, ack, push, reset, syn, fin
sequence number
for data in payload
port to identify the
sending application
port to identify
receiving application
acknowledgement
for data received
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Source Port
|
Destination Port
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Sequence Number
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ receiver’s buffer
header length in |
Acknowledgment Number
| size for
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
32 bit units
additional data
| Header|
|U|A|P|R|S|F|
|
| length| Reserved |R|C|S|S|Y|I|
Window
|
|
|
|G|K|H|T|N|N|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Checksum
|
Urgent Pointer
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Options
|
Padding
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
contains a 1’s complement checksum over
UDP packet and an IP pseudo header with
source and destination address
pointer to urgent data in segment
options may extend the header. If the options do not end on a 32-bit
boundary, the remaining fields are padded in the padding field (0’s)
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Encapsulation
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Lab Setup
Lab Setup
IXP lab
switch
switch
Internet
Student lab
switch
ot
o
b ror
e
R Er
…
con
h
ss
ion
t
c
ne
“make reset”
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Lab Setup - Addresses
IXP lab
switch
switch
…
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Lab Setup - Addresses
IXP lab
to do
to do
switch
129.240.66.?
192.168.2.2
129.240.66.?
192.168.2.3
192.168.66.11
…
…
…
129.240.66.55
switch
192.168.2.1
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Lab Setup – Data Path
SSH connection
to IFI: 129.240.66.55
IXP lab
PCI
IO
switch
hub
switch
hub interface
…
memory
hub
IXP2400
system 192.168.1.1
bus
RAM CPU
interface
192.168.1.5
memory
web bumper
(counting web packets and forwarding
all packets from one interface to another)
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Lab Setup – Data Path
SSH connection
to IFI: 129.240.66.55
IXP lab
IO
switch
hub
192.168.2.1
switch
192.168.2.11
…
memory
hub
IXP2400
192.168.1.1
CPU
192.168.1.5
memory
web bumper
(counting web packets and forwarding
all packets from one interface to another)
SSH connection to IFI: 129.240.66.54
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
The Web Bumper
web bumper
wwbump
(core)
XScale
microengines
input
port
rx
microblock
the wwbump microblock checks all packets from rx
block: if it is a ping or web packet:
! if web packet, add 1 to web counter and
forward to tx block
! if ping packet, forward to wwbump core component
! if neither, forward to tx block
The wwbump microblock forwards all packets from
the wwbump core component to the tx block
IXP 2400
the wwbump core components
checks a packet forwarded by the
wwbump microblock
! count ping packet - add 1 to icmp
counter
! send back to wwbump microblock
wwbump
(microblock)
output
port
tx
microblock
web bumper
(counting web packets and forwarding
all packets
to another)
rx block processing encompasses
all from one interface
tx block
processing encompasses all
operations performed as packets arrive
operations applied as packets depart
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Starting and Stopping
! On the host machine
" Location of the example: /root/ixa/wwpingbump
" Rebooting the IXP card: make reset
" Installing the example: make install
" Telnet to the card: telnet 192.168.1.5
! On the card
" To start the example: ./wwbump
" To stop the example: CTRL-C
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Identifying Web Packets
These are the header
fields you need for
the web bumper:
! Ethernet type 0x800
! IP type 6
! TCP port 80
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Memory
Intel IXP2400 Hardware Reference Manual
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
XScale Memory Mapping
0xFFFF FFFF
0xE000 0000
0xDFFF FFFF
0xC000 0000
PCI Memory
(up 4
toGB
½GB)
address space
Other
(32 bit
pointers)
(up to ½GB)
0xBFFF FFFF
SRAM
(up to 1GB)
PCI controller CSRs
PCI config registers
PCI Spec/IACK
PCI CFG
PCI I/O
XScale Local CSRs (32MB)
reserved
DRAM CSRs
SRAM CSRs &
Queue Array (64MB)
Scratch (32MB)
MSF
Flash ROM
reserved
CAP-CSRs
0x8000 0000
0x7FFF FFFF
SDRAM
(up to 2GB)
Mapped at boot time:
Flash ROM
Available on our cards:
! 256 MB SDRAM
! 64 MB SRAM
! 16 KB Scratch
0x0000 0000
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
XScale Memory Mapping
0xFFFF FFFF
0xE000 0000
0xDFFF FFFF
0xC000 0000
0xBFFF FFFF
PCI Memory
(up 4
toGB
½GB)
address space
Other
(32 bit
pointers)
(up to ½GB)
SRAM CSR
SRAM CSR
0xCC41 0000
Deq, Enq
Deq, Enq
0xCC40 0100
Get, Put
Get, Put
0xCE40 0000
0xCE00 0000
Add, Test and Add
0x9C00 0000
Bit Clear, Bit Test & Clear
0x9800 0000
Bit Set, Bit Test & Set
0x9400 0000
reserved
SRAM
(up to 1GB)
0x8000 0000
0x7FFF FFFF
Channel 1
SDRAM
(up to 2GB)
Channel 0
! same memory mapped four times
Mapped at boot time:
! implicit features
Flash ROM
! no more than 128 kB per channel
Read, Write, Swap
INF5061 – multimedia data communication using network processors
0xCC00 0100
0x9000 0000
Add, Test and Add
0x8C00 0000
Bit Clear, Bit Test & Clear
0x8800 0000
Bit Set, Bit Test & Set
0x8400 0000
Read, Write, Swap
0x0000 0000
0xCC01 0000
0x8000 0000
2005 Carsten Griwodz & Pål Halvorsen
Microengine Memory Mapping
0xFFFF FFFF
0xE000 0000
0xDFFF FFFF
0xC000 0000
0xBFFF FFFF
PCI Memory
(up to ½GB)
Other
(up to ½GB)
reserved
PCI controller CSRs
PCI config registers
PCI Spec/IACK
PCI CFG
PCI I/O
XScale Local CSRs (32MB)
reserved
DRAM CSRs
SRAM CSRs &
Queue Array (64MB)
Scratch
Scratch
(32MB)
MSF
0x0000 0000
Flash ROM
reserved
Add, CAP-CSRs
Test and
0x8000 0000
0x7FFF FFFF
SDRAM
(up to 2GB)
SDRAM
Mapped at boot time:
Flash ROM
Add
Bit Clear, Bit Test & Clear
0x9800 0000
Bit Set, Bit Test & Set
0x9400 0000
Read,
SRAMWrite,
Channel
Swap
1
INF5061 – multimedia data communication using network processors
0x9000
0x0000 0000
Add, Test and Add
0x8C00 0000
Bit Clear, Bit Test & Clear
0x8800 0000
Bit Set, Bit Test & Set
0x8400 0000
Read,
SRAMWrite,
Channel
Swap
0
0x0000 0000
0x9C00 0000
0x8000
0x0000 0000
2005 Carsten Griwodz & Pål Halvorsen
XScale Memory
! A general purpose processor
" With MMU
#
"
32 Kbytes instruction cache
#
"
#
Round robin replacement
Write-back cache, cache replacement on read, not on write
2 Kbytes mini-cache for data that is used once and then
discarded
#
"
Round robin replacement
32 Kbytes data cache
#
"
In use!
To reduce flushing of the main data cache
Instruction code stored in SDRAM
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Microengine Memory
!
256 general purpose
registers
128 next neighbor registers
"
Arranged in two banks
"
512 transfer registers
"
"
!
!
"
"
#
#
"
Transfer in
Transfer out
!
SRAM transfer registers
#
#
"
"
Transfer registers are not
general purpose registers
DRAM transfer registers
Transfer in
Transfer out
Push and pull on transfer
registers usually by external
units
INF5061 – multimedia data communication using network processors
New in ME V2
Dedicated data path to
neighboring ME
Also usable inside a ME
SDK use: message forwarding
using rings
2560 bytes local memory
"
"
"
"
"
New in ME V2
RAM
Quad-aligned
Shared by all contexts
SDK use: register spill in code
generated from MicroC
2005 Carsten Griwodz & Pål Halvorsen
SDRAM
! Recommended use
"
"
"
XScale instruction code
Large data structures
Packets during processing
! 64-bit addressed (8 byte aligned, quadword aligned)
! Up to 2GB
"
"
Our cards have 256 MB
Unused higher addresses map onto lower addresses!
! 2.4 Gbps peak bandwidth
"
"
Higher bandwidth than SRAM
Higher latency than SRAM
! Access
"
"
Instruction from external devices are queued and scheduled
Accessed by
#
#
#
XScale
Microengines
PCI
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
SRAM
! Recommended use
"
"
"
Lookup tables
Free buffer lists
Data buffer queue lists
! 32-bit addressed (4 byte aligned, word aligned)
! Up to 16 MB
"
"
Distributed over 4 channels
Our cards have 8 MB, use 2 channels
! 1.6 Gbps peak bandwidth
"
"
Lower bandwidth than SDRAM
Lower latency than SDRAM
! Access
"
"
XScale
Microengines
! Accessing SRAM
"
XScale access
#
"
Byte, word and longword access
Microengine access
#
Bit and longword access only
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
SRAM Special Features
!
Atomic bit set and clear with/without test
!
Atomic increment/decrement
!
Atomic add and swap
!
Atomic enqueue, enqueue_tail, dequeue
"
"
"
Hardware support for maintaining queues
Combination enqueue/enqueue_tail allows merging of queues
Several modes
#
#
#
Queue mode: data structures at discontiguous addresses
Ring mode: data structures in a fixed-size array
Journaling mode: keep previous values in a fixed-size array
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
SRAM Special Features
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Scratch Memory
! Recommended use
" Passing messages between processors and between threads
" Semaphores, mailboxes, other IPC
! 32-bit addressed (4 byte aligned, word aligned)
! 4 Kbytes
! Has an atomic autoincrement instruction
" Only usable by microengines
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Scratchpad Special Features
! Atomic bit set and clear with/without test
! Atomic increment/decrement
! Atomic add and swap
! Atomic get/put for rings
" Hardware support for rings links SRAM
" Signaling when ring is full
INF5061 – multimedia data communication using network processors
2005 Carsten Griwodz & Pål Halvorsen
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising