Control Update1 by NBtooY5


									                      Control Update 1:
                          Phase 0

                           Fred Kuhns
                  Applied Research laboratory
         Department of Computer Science and Engineering
               Washington University in St. Louis            Washington
                          WASHINGTON UNIVERSITY IN ST LOUIS
                             What’s in the slides?
• Some guiding requirements impacting design
• What will the overlay networks look like (to me)
    – simple picture summarizing the relationships between the diversified networking
      model with our current design
• Mapping IP to Ethernet addresses
    – simple picture depicting how we may associate the MAC layer next hop with a
      network layer next hop
• Basic slice creation (i.e. conventional Planetlab Slice)
• Creating an NP-based slice (what we add)
• Run-time (production) support
    – dynamic control and configuration requirements/needs
• Boot/configure time support
    – initial configuration of data plane and any debug needs
• Meta-Router control
    – local delivery and exception packets
• Configuration tool (cmd shell)
• Testing: packet generation using sp++.
    Fred Kuhns - 9/30/2012               Washington                              2
                                    WASHINGTON UNIVERSITY IN ST LOUIS
• Create high performance PlanetLab node
• Maintain compatibility with existing plab nodes/interfaces
   – external interfaces same as existing plab
   – where possible conform to existing plab abstractions, models,
     interfaces and development paradigms.
• Extend interfaces
   – internal interfaces add NP abstractions, distributed resource
• Special issues/concerns
    – Node audit service: Meta-Net traffic (flow) accounting conforming to
       existing netflow stats
    – Virtual machine model and node manager interface: extending rspec
       to account for NPs
    – Slice model: extending to include heterogeneous nodes (realizing
  Fred Kuhns - 9/30/2012          Washington                            3
                               WASHINGTON UNIVERSITY IN ST LOUIS
          Visualizing Ports, Links and Nodes
1.Meta-router uses a single UDP port                         IPA
  number (i.e. meta-port)
  • any host/router may send traffic to the
    advertised IP address/UDP port pair
  • Only works if all meta-net traffic uses
    a single line card and physical port
2.Meta-router uses a UDP port per                           IPC               P0        IPD           P0

  physical interface in use.                                 IPA                        IPB
                                                                      P0 P1    …   Pm         P0 P1    …   Pn

3.UDP tunnels act as meta-links
  – define a unique UDP tunnel between
    pairs of meta-routers
  – may have multiple UDP ports for each
    physical interface in use.                              IPC                         IPD
                                                                      P0 P1    …   Pl         P0 P1    …   Pp

    Fred Kuhns - 9/30/2012             Washington                                                 4
                                  WASHINGTON UNIVERSITY IN ST LOUIS
     Mapping IP to Ethernet Destination: Simple Case
• A Meta-Router encapsulates its             Substrate Router
  packets within a UDP datagram using                                             Simplifying assumption: For a
  the destination IP address and port
  number obtained from the lookup.                                                 given physical output port, all
• The packet is then sent to the line card                 Line Card              packets use the same Ethernet
  encapsulated within an Ethernet              IPW          Ethernet Eth1          header, in particular the same
  802.1p/q frame. The Ethernet                                                     Ethernet destination address
  destination address is obtained from                                            regardless of the IP destination
  the lookup.
• The line card must replace the                                                              address.
  Ethernet header with one specifying                      Ethernet
  the MAC layer next hop (eth addr).                           IP rtr
• For the demo we will assume there is
  only one next hop Ethernet device.

                        IPX                                                                      IPZ
               MR1                                                                                      MR3



         Fred Kuhns - 9/30/2012                    Washington                                             5
                                              WASHINGTON UNIVERSITY IN ST LOUIS
   Mapping IP to Ethernet Destination: Not so Simple
• Context: In general we can not assume there will                      Substrate Router
  only be one next hop Ethernet device.                                               Meta-Router
• Problem: We can not assume the destination IP
  address corresponds to the next hop Ethernet device                                  Line Card
  (the current design’s built-in assumption).
                                                                          IPW          Ethernet Eth
• Solutions

    – Create table mapping packet IP destination addresses
                                                                                 Ethernet Switch
      to next hop Ethernet addresses.
    – Line card performs IP route lookup to obtain    Eth2                                                         Eth3
                                                           Ethernet                                     Ethernet
      the next hop IP address then uses ARP.
                                                             IP rtr                                      IP rtr
    – Meta-router supplies the next hop IP
      address then use ARP.
    – Meta-router supplies
      the next hop Ethernet                  IPX                                                                          IPZ
      address.                      MR                                                                                              MR3



         Fred Kuhns - 9/30/2012                        Washington                                                               6
                                                  WASHINGTON UNIVERSITY IN ST LOUIS
A meta-router may use multiple physical ports


                                                             Ethernet Switch
                                                                (in chasis)

                                                               Line Card


                                         Ethernet switch             …          Ethernet switch
                                        (LAN or Router)                        (LAN or Router)

Fred Kuhns - 9/30/2012        Washington                                                          7
                         WASHINGTON UNIVERSITY IN ST LOUIS
             Basic Slice Creation: No changes
•   Slice information is entered into
    PLC database.                                                                                                   NPE
     – Current: Node manager pools PLC                   root ctx NM                                                 per Slice contexts

                                                                                       new Slice

                                                                                                          slice X

       for slice data.                                    Preallocated RM                                                   X1

                                                           Ports (UDP)
     – Planned: PLC contacts Node                               …             sys-sw
       manager proactively.                                                    vnet
                                                                          Eth1                                      Eth2
•   Node manager (pl_conf)
    periodically retrieves slice table.                   Switch
     – updates slice information
     – creates/deletes slices
                                                               Line card Eth3
•   Node manager (nm) instantiates new                          (NPE)
                                                                                                         Lookup table

    virtual machine (vserver) for                                                           filter       result
                                                                                            TUNX     VLANX Eth2
•   User logs into vserver using ssh                                                         default VLAN0 Eth1
     – uses existing plab mechansism on
                              Default configuration:
                     forward traffic to the (single) GPE, in
                      this case the user’s ssh login session.

    Fred Kuhns - 9/30/2012                     Washington                                                                        8
                                          WASHINGTON UNIVERSITY IN ST LOUIS
                                        Requesting NP
• User requests shared-NP
   – Specify code option                                         GPE                                                                NPE
                                                                 root ctx NM                                                         per Slice contexts
   – Request UDP port number for overlay tunnel

                                                                                                       Slice Y

                                                                                                                          slice X
                                                                  Preallocated RM                                    …                        X
   – Request local UDP port for exception traffic                               1

                                                                   Ports (UDP) 3         4

• Substrate Resource Manager                                            …             sys-sw                                                  Y
   1) Configure SW: Assign local VLAN to new                                      Eth1                                              Eth2
      meta router. Enable VLAN on switch ports.

   2) Configure NPE: allocates NP with requested                  Switch
      code option (decision considers both current
      load and available options)
   3) Configure LC(s): Allocate an externally                                                                                                Exception and
                                                                       Line card Eth3                                    Lookup table
      visible UDP port number (from the                                 (NPE)                                              (TCAM)             local delivery
      preallocated pool of UDP ports for the                                                               filter         result           traffic. Only need
      external IP address). Add filter(s)                                                                  TUNX       VLANX Eth2            to install filter in
                                                                                                           TUNY       VLANY Eth2                 TCAM.
       –   Ingress packet’s destination port –to- local
           (chassis) VLAN and MAC destination address
                                                                                                             default VLAN0 Eth1
       –   Egress IP destination address (??) –to- MAC
           destination address and RTM physical output
   4) Configure GPE: Open local UDP port for
      exception and local delivery traffic from NPE.                                                              Meta-network traffic uses UDP
      Transfer local port (socket) and results to                                                                tunnels. Only need to install filter
      client slice                                                                                                          in TCAM.

    Fred Kuhns - 9/30/2012                             Washington                                                                                  9
                                                  WASHINGTON UNIVERSITY IN ST LOUIS
          Software maintained Tables/Maps
• Mappings/Associations                               Substrate Interface       Meta-Port Identifier
  needed for creating filters
                                                        Line        Physical     External IP   UDP
                                                        Card        Interface     Address      port
                                                       Slot 0        Port 3 32405

                                                          …              …           …          …

                                                       Slot 1        Port 5 32400

                                                     Meta-Port to Physical Interface Table

                                                                Physical Port Next Hop MAC

                                                                     1            Eth1
                                                                    …              …
                                                                    N             EthN

                                                                Line Card Next Hop Table

  Fred Kuhns - 9/30/2012         Washington                                                       10
                            WASHINGTON UNIVERSITY IN ST LOUIS
          Configure Ethernet Switch: Step 1
• Allocate next unused VLAN id for meta-net.
   – In this scenario can a meta-net have multiple meta-routers
     instantiated on a node?
   – If so then do we allocate switch bandwidth and a VLAN id for
     the meta-net or for each meta-router?
• Configure Ethernet switch
   – enable VLAN id on applicable ports
   – need to know line card to meta-port (i.e. IP tunnel) mappings
   – if using external GigE switch then use SNMP (python
     module pysnmp)
   – if using Radisys blade then use SNMP???
   – set default QoS parameters, which are???
   – other ??

  Fred Kuhns - 9/30/2012        Washington                     11
                           WASHINGTON UNIVERSITY IN ST LOUIS
                                      Configure NPE: Step 2
•   vlan table:
     –     code option and instance number
•   memory for code options
     –     instance: base address, size and index/instance
     –     each instance is given an instance number to use for indexing into a common code option block of memory
     –     each code option is assigned a block of memory
     –     code option: base address and size. Also Max number of instances that can be supported.
•   Select NPE to host client MR
     –     Select eligible NPEs (those that have the requested code option)
     –     Select best NPE based on current load and do what???
•   Configure NPE
     –     Add entry to SRAM table mapping VLAN:PORT to MR instance
              •   What does this table look like?
              •   Where is it?
     –     Allocate memory block in SRAM for MR.
              •   Where in SRAM are the eligible blocks located?
              •   How do I reference the block?
              •   1) allocate memory for code option at load time 2) allocate memory dynamically
     –     Allocate 3 counter blocks for MR
              •   where are the blocks?
              •   How are they referenced (i.e. named)? Using VM/PM address on NP?
     –     Configure MR instance attributes
              •   What attributes are needed by the different code options?
              •   Tunnel header fields; Exception/local delivery IP header fields, QID, physical Port#; Ether ssrc of NPE???
              •   Set default QM QIDs, weights and number of queues?
•   ??

         Fred Kuhns - 9/30/2012                                       Washington                                               12
                                                                 WASHINGTON UNIVERSITY IN ST LOUIS
                       Configure LC(s): Step 3
• User may request specific UDP port number
• Open UDP socket (on GPE)
   – open socket and bind to external IP address and UDP port number. This
     prevents other slices or the system from using selected port
• Configure line card to forward tunnel(s) to correct NPE and MR
   – Add ingress and egress entries to TCAM
         • how do I know IP–to-Ethernet destination address mapping for egress filter?
   – For both ingress and egress allocate QID and configure QM with rate and
     threshold parameters for MR.
         • Do I need to allocate a Queue (whatever this means)?
         • Need to keep track of qid’s (assign qid when create instance etc)
         • For egress I need to know the output physical port number. I may also need to
           know this for ingress (if we are using external sw).

   Fred Kuhns - 9/30/2012                Washington                              13
                                    WASHINGTON UNIVERSITY IN ST LOUIS
                     Configuring GPE: Step 4
• Assign local UDP port to client for receiving exception and local
  delivery traffic.
   – user may request specific port number.
   – use either a preallocated socket or open a new one.
   – use UNIX domain socket to pass socket back to client along with other
   – all traffic will use this UDP tunnel, this means the client must perform IP
     protocol processing of encapsulated packet in user space.
         • for exception traffic this makes sense.
         • for local delivery traffic the client can use a tun/tap interface to send packet
           back into Linux kernel so it can perform more complicated processing (such
           as TCP connection management). Need to experiment with this.
• should we assign a unique local IP address for each slice?
• Result of shared-NPE allocation and socket sent back to client.

   Fred Kuhns - 9/30/2012                  Washington                                 14
                                      WASHINGTON UNIVERSITY IN ST LOUIS
                     Run-Time Support for Clients
•   Managing entries in NPE TCAM (lookup)
     – add/remove entry
     – list entries
•   NPE Statistics:
     – Allocate 2 blocks of counters: pre-queue and post-queue.
     – clear block counter pair (Byte/Pkt) ???
     – get block counter pair (Byte/pkt)
            • specify block and index
            • get once, get periodic
     – get counter group (Byte/pkt)
            • specify counter group as set of tuples: {(index, block), …}
•   SRAM read/write
     – read/write MR instance specific SRAM memory block
     – relative address and byte count, writes include new value as byte array.
•   Line card: Meta-interface packet counters, byte counters, rates and queue thresholds
     – get/set meta-interface rate/threshold
•   Other
     – Register next hop nodes as the tuple (IPdst, ETHdst), where IPdst is the destination address in the
       IP packet. The ETHdst is the corresponding Ethernet address.
     – Can we assume the destination ethernet address is always the same?
     – Issue: how do we map this to LC and physical interface? We need this information to configure
       output TCAM entries on line cards.

      Fred Kuhns - 9/30/2012                          Washington                                15
                                                 WASHINGTON UNIVERSITY IN ST LOUIS
                         Boot-time Support
•   Initialize GPE
•   Initialize NPE
•   Initialize LC
•   things to init
     –   spi switch
     –   memory
     –   microengine code download
     –   tables??
     –   default Line card tables
     –   default code paths
     –   TCAM

Fred Kuhns - 9/30/2012            Washington                     16
                             WASHINGTON UNIVERSITY IN ST LOUIS
                   IP Meta Router: Control
• All meta-net traffic arrives via a UDP tunnel using a local
  IP address.
     – raw IP packets must be handled in user space.
     – complete exception traffic processing in user space.
     – local delivery traffic: can we inject in Linux kernel so it performs
       transport layer protocol processing? This would also allow
       application to use the standard socket interface.
     – should we use two different IP tunnels, one for exception traffic
       and one for local delivery?
•   Configuration responsibilities?
•   Stats monitoring for demo?
•   get counter values
•   support for traceroute and ping
•   ONL -like monitoring tool
•   Adding/removing routes:
     – static routing tables or do we run a routing protocol?

Fred Kuhns - 9/30/2012              Washington                            17
                               WASHINGTON UNIVERSITY IN ST LOUIS
                         IP-Meta Router
• Internal packet format has changed.
     – see Jing’s slides
• Redirect: not in this version of the meta-router

Fred Kuhns - 9/30/2012           Washington                     18
                            WASHINGTON UNIVERSITY IN ST LOUIS
                  XScale Control Software
• Substrate Interface
     – Raw interface for reading/writing arbitrary memory
     – substrate stats?
     – add new meta-router
• Meta-router/Slice interface
     – all requests go through a local entity (managed)
     – not needed: authenticate client
     – validate request (verify memory location and operation)
• Node Initialization
     – ??

Fred Kuhns - 9/30/2012         Washington                     19
                          WASHINGTON UNIVERSITY IN ST LOUIS
                Command/Configuration Tool
• Simple command interpreter with syntax similar to lisp
• Basic syntax:
  expr := cmd [arg]*
  arg := [‘(‘ expr ’)’ | array | scalar | string]
• Commands are either arithmetic expressions or some system defined operation
  (mem, vmem, set, etc.)
• Command arguments are typed scalar and array values: integers, double and
• Allow you to read/write any location in physical memory interactively or via a

                arg type        POSIX                   Traditional
             dw1             uint8_t            unsigned char
             dw2             uint16_t           unsigned short
             dw4             uint32_t           unsigned int
             dw8             uint64_t           unsigned long long
             string          NA                 char BUF[]
             double          double             double

    Fred Kuhns - 9/30/2012              Washington                        20
                                   WASHINGTON UNIVERSITY IN ST LOUIS
                              Example Operations
cmd> $a = (dw4 0x01010101 \            cmd> help
                0x02020202 \           Usage:
                0x03030303)              <type> : type is one of
cmd> $b = $a + (dw4 0x01010101 0x02 4)             {int, dw8, dw4,
  <b,{0x2020202,0x2020204,0x4040408}>               dw2, dw1, dbl}
cmd> $c = 3 + $b[2] * 2 - 4              load "file_name"
  <c, 134744079>                         mem : commands to manage
cmd> (dw4 $c)                                  internal memory maps
 <TEMP16, 0x808080f (RO)>                  mem read maps
                                           mem show maps
cmd> $t = "text one" +\                    mem read paddr [type] [count]
          " two"                           mem write paddr value
 <t, "text one two">                     vmem : read/write to kernel
                                                 virutal memory
cmd> set                                   vmem read vaddr [type] [count]
Symbol Table:                              vmem write vaddr value
  <t,"text one two">

     Fred Kuhns - 9/30/2012             Washington                     21
                                   WASHINGTON UNIVERSITY IN ST LOUIS
                          Reading Memory Maps
cmd> mem read maps
Adding symbols:
   <DRAM0_PADDR, 0> <DRAM0_VADDR, 0xa7480000> <DRAM0_SIZE, 0x20000000>
   <DRAM0_CSR_PADDR, 0xd0009000> <DRAM0_CSR_VADDR, 0xa73d0000> <DRAM0_CSR_SIZE, 0x1000>
   <DRAM1_CSR_PADDR, 0xd000a000> <DRAM1_CSR_VADDR, 0xa73f0000> <DRAM1_CSR_SIZE, 0x1000>
   <DRAM2_CSR_PADDR, 0xd000b000> <DRAM2_CSR_VADDR, 0xa7410000> <DRAM2_CSR_SIZE, 0x1000>
   <SRAM0_PADDR, 0x80000000> <SRAM0_VADDR, 0> <SRAM0_SIZE, 0>
   <SRAM1_PADDR, 0x90000000> <SRAM1_VADDR, 0xc7490000> <SRAM1_SIZE, 0x800000>
   <SRAM2_PADDR, 0xa0000000> <SRAM2_VADDR, 0xc7ca0000> <SRAM2_SIZE, 0x800000>
   <SRAM3_PADDR, 0xb0000000> <SRAM3_VADDR, 0xc84b0000> <SRAM3_SIZE, 0x800000>
   <SRAM0_CSR_PADDR, 0xcc010000> <SRAM0_CSR_VADDR, 0xa7440000> <SRAM0_CSR_SIZE, 0x1000>
   <SRAM1_CSR_PADDR, 0xcc410000> <SRAM1_CSR_VADDR, 0xa7450000> <SRAM1_CSR_SIZE, 0x1000>
   <SRAM2_CSR_PADDR, 0xcc810000> <SRAM2_CSR_VADDR, 0xa7460000> <SRAM2_CSR_SIZE, 0x1000>
   <SRAM3_CSR_PADDR, 0xccc10000> <SRAM3_CSR_VADDR, 0xa7470000> <SRAM3_CSR_SIZE, 0x1000>
cmd> mem show maps
DRAM Channel 0: kpa 0x00000000, kva 0xa7480000, Size 536870912 (cachable 0, bufferable 0)
DRAM CSR Ch 0: kpa 0xd0009000, kva 0xa73d0000, Size 65536 (cachable 0, bufferable 0)
DRAM CSR Ch 1: kpa 0xd000a000, kva 0xa73f0000, Size 65536 (cachable 0, bufferable 0)
DRAM CSR Ch 2: kpa 0xd000b000, kva 0xa7410000, Size 65536 (cachable 0, bufferable 0)
SRAM Channel 0: kpa 0x80000000, kva 0x00000000, Size 0 (cachable 0, bufferable 1)
SRAM Channel 1: kpa 0x90000000, kva 0xc7490000, Size 8388608 (cachable 0, bufferable 1)
SRAM Channel 2: kpa 0xa0000000, kva 0xc7ca0000, Size 8388608 (cachable 0, bufferable 1)
SRAM Channel 3: kpa 0xb0000000, kva 0xc84b0000, Size 8388608 (cachable 0, bufferable 1)
SRAM Ring1 CSR: kpa 0xce400000, kva 0xd16a0000, Size 4096 (cachable 0, bufferable 1)
SRAM Ring2 CSR: kpa 0xce800000, kva 0xd16b0000, Size 4096 (cachable 0, bufferable 1)
SRAM Ring3 CSR: kpa 0xcec00000, kva 0xd16c0000, Size 4096 (cachable 0, bufferable 1)
SRAM CSR Ch 0: kpa 0xcc010000, kva 0xa7440000, Size 4096 (cachable 0, bufferable 1)

      Fred Kuhns - 9/30/2012                Washington                               22
                                       WASHINGTON UNIVERSITY IN ST LOUIS
              Possible configuration script

mem write $MYTABLE_START (dw4 0x00000000 \
                              $DEFAULT_ADDR \
set ETHER_ADDR 00:e4:4d:33:00:00
$ETHER_ADDR[5] = 2
$ETHER_BASE[5] = 3
mem write ($MYTABLE_START + 20) (mem read $SOMEPLACE dw4 1)

Fred Kuhns - 9/30/2012        Washington                      23
                         WASHINGTON UNIVERSITY IN ST LOUIS
                     Testing: Generating Packets
sp++ <arguments>
          ---------Packet/data Sending Rate --------------
        [(-n|--pcnt) n] : Number of pkts to send. default = 100000.
        [(-x|--pps) rate] : Pkt/sec, default 100
        [--Kbps rate]: Kbps for IP datagrams. default 0 Kbps
        [--KBps KBps] : KBps for IP datagram
          ---------When pkts are sent, see below for description--------
        [(-m|--mode) m] : m is one of {cont|burst|swait}
        [(-p|--period) p] : send <b> pkts every <p> msecs. default = 0 msec
        [(-B|--batch) b] : Number of pkts to send in a batch, default = 0 pkts
        [--pdelay n] : nsec inter-packet gap
          ---------Packet Size, Specify only one --------------------------
        [--dlen b] : Size of payload in bytes, default = 4
           --------Flags affecting pkt size or content -----------------
        [--dtype) type] : Packet data type (zero, seq, UDP)
        [--ftype type] : Type of frame to send (raw, udp, tcp, data)
        [--file name] : Name of file containing the raw packet data (ftype == raw)
          ---------Network addressing information -------------------------
        [--sa host] : Use local address "host", default INADDR_ANY
        [(-s|--sp) port] : Source port to use. default = 0
        [--da host] : Send to remote "host“, required option
        [(-d|--dp) port] : Destination port number to use. default = 5050
        [--pr (udp|tcp)] : Transport protocol UDP or TCP. default = udp
          ---------Various Endsystem/Socket Control parameters ------------
        [--sbuf sz] : Set socket buffer size, net set by default
          ---------Parameters affecting the core processing steps----------
        [(-D|--dot) (0/1)]: print a dot '.' each time we have to retransmit
        [--rxtout ms] : Timeout for reply pkts, units msec. default = 100 msec
          ---------Debug/message flags -----------------------------------
        [--rt p] : Put process in the real-time scheduling class with prio 'p'.

      Fred Kuhns - 9/30/2012                      Washington                         24
                                             WASHINGTON UNIVERSITY IN ST LOUIS
                              Example Command
•    Example using a constant inter-packet gap
     sp++ -n 10 --pps 1 --mode cont --ftype raw \
           --file Rx_NPUA_Dev_0_Port_0.log --ifn eth2
          -n 10 : send a total of 10 packets
          --pps 1 : send at a rate of 1 packets per second
          --mode cont : use a constant inter-packet delay calculated from pps
          --ftype : selects the RAW packet interface protocol family
          --file Rx_NPUA_Dev_0_Port_0.log : read packet contents from file
          --ifn eth2 : send packets out interface eth2

•    Or for low packet rates use burst mode:
     sp++ -n 10 --pps 1 --mode burst --ftype raw \
          --file Rx_NPUA_Dev_0_Port_0.log --ifn eth2
     only difference is the option: --mode burst
•    Printing the help message
     sp++ --help
•    I have copied an example packet file into the bin directory (/opt/bin):
•    You must be root or use sudo to run sp++ since it opens a raw device socket.
•    You can use tcpdump to watch the packets being sent:
    tcpdump -i eth2

     Fred Kuhns - 9/30/2012                Washington                          25
                                      WASHINGTON UNIVERSITY IN ST LOUIS
Example File: Rx_NPUA_Dev_0_Port_0.log
• 0102030405060708090a0b0c81000aaa080045000
• 0102030405060708090a0b0c81000aaa080045000
• 0102030405060708090a0b0c81000aaa080045000

 Fred Kuhns - 9/30/2012        Washington                     26
                          WASHINGTON UNIVERSITY IN ST LOUIS
 Testing Environment: Generating Traffic
• What sort of packet generations features are useful? What do
  you need?
• Generate packets identical to those used in simulation?
   – specify on command line?
• Do you need to generate arbitrary Ethernet headers or can we
  preconfigured the host’s Ethernet interface to use VLANs?
• Do you need to specify arbitrary UDP tunnel headers or can
  we use the standard socket mechanism to establish the
• The encapsulated IP and transport headers will be built up by
  the program (sp) and thus must be specified on the command
    – or is there a default encapsulated header that will do and can
        preconfigured at compile time? This can be overloaded at run time.
  Fred Kuhns - 9/30/2012           Washington                              27
                                WASHINGTON UNIVERSITY IN ST LOUIS
      Expected Ethernet Frame Format (see 802.3ac)
                                                    Destination (6 B)

                               Destination Address cont.

                                  Source Address (6 B)
                Source Address cont.             EtherType (vlan 0x8100)
           prio CFI          VID                    Original EtherType
           Version HdrLen          TOS                 Total length
                    Identification           Flags      Fragment offset


                 TTL            Protocol           IP Header checksum

                                    IP Source Address
                                 IP Destination Address
                        sport                             dport

                        length                            cksum
           Version HdrLen          TOS                 Total length
                    Identification           Flags      Fragment offset
                 TTL            Protocol           IP Header checksum

                                    IP Source Address

                                                                                                      IP Datagram
                                 IP Destination Address
                                    transport header


                                    Frame Check Sequence (FCS)

Tag control information (TCI): Priority (3-bits), Canonical format indicator (CFI) (1-bit), VLAN ID (VID) (12-bit),
  Length/Type (16-bit). CFI should always be set to zero (CFI = 0).
VID = 0 identifies priority frames (what does this mean?). VID = 4095 (0xfff) is reserved.
Minimum frame size is 65B
       Fred Kuhns - 9/30/2012                       Washington                                          28
                                               WASHINGTON UNIVERSITY IN ST LOUIS

To top