210 likes | 234 Views
Design of a Diversified Router: Packet Formats. John DeHart jdd@arl.wustl.edu http://www.arl.wustl.edu/arl. Revision History. 6/2/06 (JDD): Created 6/6/06 (JDD): Modified Internal Frame formats Added some notes about handling of frames with IPv4 MR Internal Headers. 6/13/06 (JDD):
E N D
Design of aDiversified Router:Packet Formats John DeHartjdd@arl.wustl.edu http://www.arl.wustl.edu/arl
Revision History • 6/2/06 (JDD): • Created • 6/6/06 (JDD): • Modified Internal Frame formats • Added some notes about handling of frames with IPv4 MR Internal Headers. • 6/13/06 (JDD): • Updated notes on handling frames with IPv4 MR Internal Headers.
DstAddr (6B) DstAddr (6B) SrcAddr (6B) SrcAddr (6B) Type=802.1Q (2B) Type=802.1Q (2B) TCI (2B) TCI ≠ VLAN0 (2B) DstAddr (6B) DstAddr (6B) Type=Substrate (2B) Type=IP (2B) MLI (2B) Ver/HLen/Tos/Len (4B) SrcAddr (6B) SrcAddr (6B) LEN (2B) ID/Flags/FragOff (4B) Type=802.1Q (2B) Meta Frame TTL (1B) Type=802.1Q (2B) TCI≠VLAN0 (2B) Protocol (1B) TCI=VLAN0 (2B) Hdr Cksum (2B) Type=Substrate (2B) Type=Substrate (2B) Src Addr (4B) MLI (2B) MLI (2B) LEN (2B) Dst Addr (4B) LEN (2B) PAD (nB) Meta Frame Meta Frame IP Payload CRC (4B) PAD (nB) PAD (nB) PAD (nB) CRC (4B) CRC (4B) CRC (4B) P2P-VLAN0 Multi-Access Legacy External Frame Formats: with VLAN DstAddr (6B) SrcAddr (6B) Type=802.1Q (2B) TCI ≠ VLAN0 (2B) Type=IP (2B) Ver/HLen/Tos/Len (4B) ID/Flags/FragOff (4B) TTL (1B) Protocol=Substrate (1B) Hdr Cksum (2B) Src Addr (4B) Dst Addr (4B) MLI (2B) LEN (2B) Meta Frame PAD (nB) CRC (4B) P2P-DC (Configured) P2P-Tunnel • Blue Shading: Determine SL Type • Black Outline: Key Fields from pkt
External Frame Formats: w/o VLAN DstAddr (6B) DstAddr (6B) SrcAddr (6B) SrcAddr (6B) Type=IP (2B) Type=IP (2B) Ver/HLen/Tos/Len (4B) Ver/HLen/Tos/Len (4B) DstAddr (6B) DstAddr (6B) ID/Flags/FragOff (4B) ID/Flags/FragOff (4B) TTL (1B) TTL (1B) SrcAddr (6B) SrcAddr (6B) Protocol=Substrate (1B) Protocol (1B) Hdr Cksum (2B) Hdr Cksum (2B) Type=Substrate (2B) Type=Substrate (2B) Src Addr (4B) Src Addr (4B) MLI (2B) MLI (2B) Dst Addr (4B) Dst Addr (4B) LEN (2B) LEN (2B) Meta Frame MLI (2B) Meta Frame IP Payload LEN (2B) Meta Frame PAD (nB) PAD (nB) PAD (nB) PAD (nB) CRC (4B) CRC (4B) CRC (4B) CRC (4B) P2P-DC (Configured) P2P-Tunnel Legacy Multi-Access • Blue Shading: Determine SL Type • Black Outline: Key Fields from pkt
External Frame Formats: GRE DstAddr (6B) SrcAddr (6B) DstAddr (6B) Type=802.1Q (2B) SrcAddr (6B) TCI ≠ VLAN0 (2B) Type=IP (2B) Type=IP (2B) Ver/HLen/Tos/Len (4B) Ver/HLen/Tos/Len (4B) ID/Flags/FragOff (4B) ID/Flags/FragOff (4B) TTL (1B) TTL (1B) • We are considering GRE tunnels as another SL Type Protocol=GRE (1B) Protocol=GRE (1B) Hdr Cksum (2B) Hdr Cksum (2B) Src Addr (4B) Src Addr (4B) ` Dst Addr (4B) Dst Addr (4B) Flags/recur/Ver (2B) Flags/recur/Ver (2B) Type=Substrate (2B) ` Type=Substrate (2B) ` Optional Fields (nB) Optional Fields (nB) MLI (2B) MLI (2B) ` LEN (2B) LEN (2B) Meta Frame MLI (2B) Meta Frame PAD (nB) PAD (nB) CRC (4B) • Blue Shading: Determine SL Type • Black Outline: Key Fields from pkt CRC (4B) VLAN GRE GRE
DAddr (6B) SAddr (6B) Type=802.1Q (2B) VLAN (2B) Type=Substrate (2B) Internal Frame Format Ethernet Header 18 Bytes Substrate Header Metanet Frame (Metanet Frame Len Bytes) Type (4b) Metanet Frame Len (12b) 6-70 Bytes Destination MPE/MI (2B) Ethernet Trailer (Pad+CRC) Source MPE/MI (2B) • Type:Defines what type of frame we have • See next slides for details on types • MPE: Meta Processing Element • MI: Meta Interface • MetaNet Frame Length: Length of Metanet Frame in Bytes Type Dependent Data (0-64B)
0000 0001 0100 0010 Metanet Frame Len (12b) Metanet Frame Len (12b) Metanet Frame Len (12b) Metanet Frame Len (12b) TxMI (2B) Destination MPE (2B) Destination MPE (2B) TxMI (2B) Source MPE (2B) RxMI (2B) RxMI (2B) Source MPE (2B) Substrate Header • Transit: LC LC • TxMI and RxMI are defined by the Substrate on the LC • They are not actual MIs on a MR • Internal: MPE MPE • MNs can define their on MN Internal header to be put in the MetaNet Frame • Ingress: LC MPE • Egress Simple: MPE LC • No extra information needed
0101 Metanet Frame Len (12b) TxMI (2B) Source MPE (2B) Length (1B) NH MN Addr (0-63B) 0110 Metanet Frame Len (12b) TxMI (2B) Source MPE (2B) MAC Address (6B) Substrate Header (continued) • Egress MAC_ADDR: MPE LC • MPE provides MAC address for Substrate to use when sending out on Egress link • Egress NH_MN_Addr: MPE LC • MPE provides a next hop MN address for Substrate to perform ARP for it. • (Length + Nh MN Addr) field padded to be even number of bytes long
Length (1B) Length (1B) Type (1B) Type (1B) TxMI (2B) RxMI (2B) Type Dependent Data (0-???B) Type Dependent Data (0-???B) IPv4 MR Internal Header Length (1B) Exception Type (1B) RxMI (2B) Type Dependent Data (0-???B) • CP to MPE !Reclassify • Return packets to MPE for re-injection into fast path • Also used by CP to inject new packets into data stream. • For example, ICMP • MR does not need to reclassify • Substrate would need a lookup on TxMI to get the information needed to get packet to LC. • Length = 4 Bytes • Type = 0x0 • No Type Dependent Data • MPE to CP • Slow path handling of exception packets • Some exceptions may require additional data to be • communicated to CP • CP to MPE Reclassify • Return packets to MPE for re-injection into fast path • Ingress Lookup: Redo the normal lookup with provide RxMI in Key. • Length = 4 Bytes • Type = 0x1 • No Type Dependent Data
IPv4 MR Internal Header Notes • Input data to Parse is MN Frame Offset and Length • Output data from Parse is IP Pkt Offset and Length • If there is a MN Internal Header, Parse basically consumes it. • Hdr Format needs to start at the beginning of the IP Header and re-write headers upward in the Buffer. • If Parse receives a frame/pkt from the CP, • It should not decrement the TTL. • Assume a pkt coming from the CP has the correct TTL for going out on the link • It should validate the header and check the header checksum • It should not generate an exception for IP options. • Assume the CP has dealt with all the exceptions. • What about the case where the TxMI is on a Multi-Access Link and needs a Next Hop MetaNet Address to resolve the next hop destination? • For Frame/Pkt from CP, what does Demux put in RxMI data field passed to Parse?
0000 Metanet Frame Len (12b) Destination MPE (2B) RxMI (2B) LC MPE (Ingress) Internal Format DAddr (6B) LC SAddr (6B) Type=802.1Q (2B) VLAN (2B) Type=Substrate (2B) Metanet Frame (Metanet Frame Len Bytes) MPE • Destination MPE: ID of receiving MPE • RxMI: Receive Meta Interface Ethernet Trailer (Pad+CRC)
0001 Metanet Frame Len (12b) TxMI (2B) RxMI (2B) LC LC (Transit) Internal Format DAddr (6B) LC SAddr (6B) Type=802.1Q (2B) VLAN (2B) Type=Substrate (2B) Metanet Frame (Metanet Frame Len Bytes) LC • TxMI: Substrate allocated MI for translation to Egress MLI • RxMI: Substrate allocated MI • Probably not really needed, present for symmetry Ethernet Trailer (Pad+CRC)
0010 Metanet Frame Len (12b) Destination MPE (2B) Source MPE (2B) MPE MPE Internal Format DAddr (6B) MPE SAddr (6B) Type=802.1Q (2B) VLAN (2B) Type=Substrate (2B) Metanet Frame (Metanet Frame Len Bytes) MPE • Destination MPE: ID of receiving MPE • Source MPE: ID of sending MPE • MR specific information, things like exception packet indicators, etc. go in a MetaNet specific header in the MetaNet Frame. Ethernet Trailer (Pad+CRC)
0100 Metanet Frame Len (12b) TxMI (2B) Source MPE (2B) MPE LC (Egress Simple) Internal Format DAddr (6B) MPE SAddr (6B) Type=802.1Q (2B) VLAN (2B) Type=Substrate (2B) Metanet Frame (Metanet Frame Len Bytes) LC • Source MPE: ID of sending MPE • TxMI: Transmit Meta Interface Ethernet Trailer (Pad+CRC)
0101 Metanet Frame Len (12b) TxMI (2B) Source MPE (2B) Length (1B) NH MN Addr (0-63B) MPE LC (Egress NH MN) Internal Format DAddr (6B) MPE SAddr (6B) Type=802.1Q (2B) VLAN (2B) Type=Substrate (2B) LC • Source MPE: ID of sending MPE • TxMI: Transmit Meta Interface • NH MN Addr: Padded to so that Length + NH MN Addr is an even number of Bytes Metanet Frame (Metanet Frame Len Bytes) Ethernet Trailer (Pad+CRC)
0110 Metanet Frame Len (12b) TxMI (2B) Source MPE (2B) MAC Address (6B) MPE LC (Egress MAC) Internal Format DAddr (6B) MPE SAddr (6B) Type=802.1Q (2B) VLAN (2B) Type=Substrate (2B) LC • Source MPE: ID of sending MPE • TxMI: Transmit Meta Interface • MAC: We are assuming Ethernet addresses here. Should we? Metanet Frame (Metanet Frame Len Bytes) Ethernet Trailer (Pad+CRC)
Data Delivered by Substrate to MPE Metanet Frame Len (16b) Destination MPE (2B) RxMI (2B) Metanet Frame (Metanet Frame Len Bytes) • In a shared NPU case: • MR will not receive the Ethernet header or trailer • Type field will be zeroed out and look like it is part of the Frame Length. • Destination MPE should be id of MR MPE receiving packet
Extra • The next set of slides are for templates or extra information if needed
IPv4 MR Internal Header Notes • Input data to Parse is MN Frame Offset and Length • Output data from Parse is IP Pkt Offset and Length • If there is a MN Internal Header, Parse basically consumes it. • Hdr Format needs to start at the beginning of the IP Header and re-write headers upward in the Buffer. • If Parse receives a !Reclassify frame/pkt from the CP, • it should not decrement the TTL. • Assume this was done on the first trip through the MR. • it should not generate exceptions again. • For Frame/Pkt from CP, what does Demux put in RxMI data field passed to Parse?