ixp: the bump in the wire ixp: the bump in the wire inf5062: programming asymmetric multi-core...

43
IXP: IXP: The Bump in the Wire The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors March 25, 2022

Upload: jaeden-mandeville

Post on 14-Dec-2015

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

IXP:IXP:The Bump in the WireThe Bump in the Wire

INF5062:Programming Asymmetric Multi-Core Processors

April 18, 2023

Page 2: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

Background and Motivation:

Network traffic increase

Page 3: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Uses conventional, shared hardware (e.g., a PC)

Software−runs the entire system−allocates memory−controls I/O devices−performs all protocol processing

First generation network systems:

Software-Based Network System

Page 4: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Review of General Data Path on Conventional Computer Hardware Architectures

communicationsystem

application

user space

kernel space

sending:

communicationsystem

application

receiving:

communicationsystem

application

forwarding:Ch

ecks

umm

ing

Copy

ing

Frag

men

tatio

nIn

terr

upts

Page 5: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Question:

Which is growing faster?−network bandwidth−processing power

Note: if network bandwidth is growing faster−CPU may be the bottleneck−need special-purpose hardware

Note: if processing power is growing faster−no problems with processing−network/busses will be bottlenecks

Page 6: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Growth Of TechnologiesMbps

year

Engineering rule: 1GHz general purpose CPU = 1Gbps network data rate

Thus, software running on a general-purpose processor is insufficient to handle high-speed networks because the aggregate packet rate exceeds the capabilities of the CPU

Page 7: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Network Processors: The Idea in a Nutshell

Many designs through many generations (varying amount of HW & SW)

Include support for protocol processing and I/O on one chip

− General-purpose processor(s) for control tasks

− Special-purpose processor(s) for packet processing and table lookup

− Include functional units for tasks such as checksum computation, hashing, …

Call the result a network processor

Page 8: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Network Processors: Main Idea

Traditional system:- slow- resource demanding- shared with other operations

Network processors:- a computer within the computer- special, programmable hardware- offloads host resources

Page 9: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Explosion of Commercial Products 1990 2000: network processors transformed from

interesting curiosity to mainstream product− reduction in both overall costs and time to market

− 2002: over 30 vendors with a vide range of architectures

− e.g.,• Multi-Chip Pipeline (Agere)• Augmented RISC Processor (Alchemy)• Embedded Processor Plus Coprocessors (Applied Micro Circuit

Corporation)• Pipeline of Homogeneous Processors (Cisco)• Pipeline of Heterogeneous Processors (EZchip)• Configurable Instruction Set Processors (Cognigine)• Extensive And Diverse Processors (IBM)• Flexible RISC Plus Coprocessors (Motorola)• Internet Exchange Processor (Intel)• …

Page 10: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

Intel IXP1200 / 2400IXP1200 / 2400:A Short Overview

Page 11: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXA: Internet Exchange Architecture IXA is a broad term to

describe the Intel network architecture (HW & SW, control- & data plane)

IXP: Internet Exchange Processor− processor that implements

IXA

− IXP1200 is the first IXP chip (4 versions)

− IXP2xxx has now replaced the first version

IXP1200 basic features− 1 embedded 232 MHz

StrongARM− 6 packet 232 MHz µengines− onboard memory − 4 x 100 Mbps Ethernet ports− multiple, independent busses− low-speed serial interface− interfaces for external memory

and I/O busses− …

IXP2400 basic features − 1 embedded 600 MHz XScale− 8 packet 600 MHz µengines− 3 x 1 Gbps Ethernet ports− …

Page 12: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP1200 Architecture

Serial line:- connects to the RISC- intended for control and management- rate 38 Kbps

PCI bus:- allow IXP to connect to I/O devices - enable use of host CPU- rate 2.2 Gbps

IX (Intel eXchange) bus:- enable higher rates compared to PCI- form fast path (IXP and high-speed interfaces)- interface to other IXP cards- 4.4 Gbps

SRAM bus:- shared bus (several external units)- usually control rather than data- rate 3.71 Gbps

SDRAM bus:- provide access to external SDRAM memory used to store packets- can also pass addresses, control/store operations, etc.- rate 7.42 Gbps

Page 13: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP1200 Architecture

RISC processor:- StrongARM running Linux- control, higher layer protocols and exceptions- 232 MHz

Microengines:- low-level devices with limited set of instructions- transfers between memory devices - packet processing- 232 MHz

Access units:- coordinate access to external units

Scratchpad:- on-chip memory- used for IPC and synchronization

Page 14: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP1200 Processor Hierarchy

General-Purpose Processor:- used for control and management- running general applications

RISC processor:- chip configuration interface (serial line)- control, higher layer protocols and exceptions

I/O processors (microengines):- transfers between memory devices - packet processing

Coprocessors:- real-time clock and timers- IX bus controller- hashing unit- ...

Physical interface processors:- implement layer 1 & 2 processing

Page 15: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP1200 Memory Hierarchy

Page 16: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP1200 Memory Hierarchy

Different memory types… …are organized into different addressable data units (words or longwords)…have different access times…connected to different bussesTherefore, to achieve optimal performance, programmers must understand the organization and allocate items from the appropriate type

Page 17: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP1200 IXP2400

SRAM

FLASH

MEMORYMAPPED

I/O

DRAM

SRAMaccess

SDRAMaccess

SCRATCHmemory

PCIaccess

IXaccess

EmbeddedRISK CPU

(StrongARM)

PCI bus

IX bus

DRAM bus

SRAM bus

microengine 2

microengine 1

microengine 5

microengine 4

microengine 3

microengine 6

multipleindependent

internalbuses

IXP1200

Page 18: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP2400

IXP2400 Architecture

microengine 8

SRAM

coprocessor

FLASH

DRAM

SRAMaccess

SDRAMaccess

SCRATCHmemory

PCIaccess

MSFaccess

EmbeddedRISK CPU(XScale)

PCI bus

receive bus

DRAM bus

SRAM bus

microengine 2

microengine 1

microengine 5

microengine 4

microengine 3

multipleindependent

internalbusesslowport

access

transmit bus

RISC processor:- StrongArm XScale- 233 MHz 600 MHz

Microengines- 6 8- 233 MHz 600 MHz

Media Switch Fabric- forms fast path for transfers- interconnect for several IXP2xxx

Receive/transmit buses- shared bus separate busses

Slowport- shared inteface to external units- used for FlashRom during bootstrap

Coprocessors- hash unit- 4 timers- general purpose I/O pins- external JTAG connections (in-circuit tests)- several bulk cyphers (IXP2850 only)- checksum (IXP2850 only)- …

Page 19: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP2400 Architecture

Memory−generally more of everything

−generally larger gap between CPUs and memory access in terms of cycles

−local memory on each microengine• saving temporary results• private per packet processor• small (2560 bytes)• low latency (one cycle)• accessed through special registers

Page 20: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP2400 Basic Packet Processing

microengine 8

SRAM

coprocessor

FLASH

DRAM

SRAMaccess

SDRAMaccess

SCRATCHmemory

PCIaccess

MSFaccess

EmbeddedRISK CPU(XScale)

PCI bus

receive bus

DRAM bus

SRAM bus

microengine 2

microengine 1

microengine 5

microengine 4

microengine 3

multipleindependent

internalbusesslowport

access

transmit bus

Page 21: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

Using IXP2400

Page 22: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Intel IXP2400 Hardware Reference Manual

Page 23: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Programming Model

RXmicroblock

TXmicroblock

XScalemicroengines

input ports

output ports

corecomponent

processmicroblock

Scratch rings

head

tail

metadataqueue data buffers

linked list

logical mapping

Page 24: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Programming Model

RXmicroblock

TXmicroblock

XScalemicroengines

input ports

output ports

corecomponent

processmicroblock

Hardware contexts

Threads

Page 25: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

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_

Page 26: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

Bump in the Wire

Page 27: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Bump in the Wire

Internet

Count web packets, count ICMP packets

Page 28: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

Packet Headers and Encapsulation

Page 29: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Ethernet

describes content of ethernet frame, e.g., 0x0800 indicates an IP datagram,0x0806 indicates an ARP packet

48 bit address configured to an interface on the NIC on the receiver

48 bit address configured to an interface on the NIC on the sender

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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 30: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Internet Protocol version 4 (IPv4)

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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

indicates the format of the internet header, i.e., version 4

length of the internet header in 32 bit words, and thus points to the beginning of the data (minimum value of 5)

datagram length(octets) includingheader and data - allows the lengthof 65,535 octets

identifying value to aid assembly of fragments

first zero, fragments allowed and last fragment

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

indicates used transport layer protocol

disable a packet to circulate forever,decrease value by at least 1 in each node – discarded if 0

32-bit address fields. May be configured differently from small to large networks

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)

indication of the abstract parameters of thequality of service desired – somehow treathigh precedence traffic as more important – tradeoff between low-delay, high-reliability, andhigh-throughput – NOT used, bits now reused for differential services code point

Page 31: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Internet Control Message Protocol (ICMPv4)

type-specific arbitrary length data

Type of the control msg, includingecho request (8) and echo reply (0)

Checksum for theICMP 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Refinement

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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ICMP Echo Request

Optional identifier,chosen by sender, echoed by receiver

Optional sequence number,chosen by sender, echoed by receiver

Page 32: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

UDP

specifies the total length of the UDP datagram in octets

contains a 1’s complement checksum over UDP packet and an IP pseudo header with source and destination address

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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Page 33: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

TCP

port to identify the sending application

port to identify receiving application

contains a 1’s complement checksum over UDP packet and an IP pseudo header with source and destination address

sequence number for data in payload

acknowledgementfor data received

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)

header length in 32 bit units

pointer to urgent data in segment

code bits: urgent, ack, push, reset, syn, fin

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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

receiver’s buffer size foradditional data

Page 34: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Encapsulation

Page 35: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Identifying Web Packets

These are the headerfields you need for the web bumper: Ethernet type 0x800 IP type 6 TCP port 80

Page 36: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

Lab Setup

Page 37: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Lab Setup

IXP lab

switch

Internet

Student lab switch

…switch

ssh connection

Page 38: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Lab Setup - Addresses

IXP lab

switch

…switch

Page 39: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP lab

switch

switch

IXP lab

Lab Setup - Addresses

switchswitch

192.168.2.11

192.168.2.50

192.168.2.51

192.168.2.52

192.168.2.55

129.240.66.50

129.240.66.51

129.240.66.52

129.240.66.55……

Page 40: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Lab Setup – Data PathIXP lab

switch

switch

IXP2

40

0

PCIIO

hub

memoryhub

CPU

memory

hub interface

systembus

RAMinterface

web bumper(counting web packets and forwarding

all packets from one interface to another)

192.168.1.1

192.168.1.5

SSH connection to IFI: 129.240.66.50

Page 41: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

Lab Setup – Data PathIXP lab

switch

switch

IXP2

40

0

IOhub

memoryhub

CPU

memory

web bumper(counting web packets and forwarding

all packets from one interface to another)

192.168.1.1

192.168.1.5

SSH connection to IFI: 129.240.66.50

192.168.2.50 192.168.2.11

SSH connection to IFI: 129.240.66.48

Page 42: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

IXP 2

40

0

The Web Bumper

web bumper(counting web packets and forwarding

all packets from one interface to another)

web bumper wwbump

(core)

output port

inputport

XScalemicroengines

rx block processing encompasses alloperations performed as packets arrive

tx block processing encompasses all operations applied as packets depart

rxmicroblock

txmicroblock

wwbump(microblock)

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

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 blockThe wwbump microblock forwards all packets from the wwbump core component to the tx block

Page 43: IXP: The Bump in the Wire IXP: The Bump in the Wire INF5062: Programming Asymmetric Multi-Core Processors 22 April 2015

INF5062, Carsten Griwodz & Pål HalvorsenUniversity of Oslo

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• minicom

On the card−To start the example: ./wwbump−To stop the example: CTRL-C

Let’s look at an example...