WO2009117175A1 - Content driven packet switch - Google Patents

Content driven packet switch Download PDF

Info

Publication number
WO2009117175A1
WO2009117175A1 PCT/US2009/032025 US2009032025W WO2009117175A1 WO 2009117175 A1 WO2009117175 A1 WO 2009117175A1 US 2009032025 W US2009032025 W US 2009032025W WO 2009117175 A1 WO2009117175 A1 WO 2009117175A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
data
port
data packet
switch
Prior art date
Application number
PCT/US2009/032025
Other languages
French (fr)
Inventor
Brian Scott Darnell
Justin Preyer
Original Assignee
Integrated Device Technology, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Integrated Device Technology, Inc. filed Critical Integrated Device Technology, Inc.
Publication of WO2009117175A1 publication Critical patent/WO2009117175A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/355Application aware switches, e.g. for HTTP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags

Definitions

  • FIG. 1 is a block diagram of a communication system, in accordance with an embodiment of the present invention.
  • a packet switch routes data packets to destination ports of the packet switch based on packet headers of the data packets. Further, the packet switch selects some of the data packets based on data payloads of the data packets, and routes the selected data packets to one or more trace ports in the packet switch. In this way, the packet switch routes each selected data packet to both a destination port and at least one trace port. In further embodiments, the packet switch includes one or more trace buffers in the trace ports for storing data packets received by the trace ports.
  • the packet switch 105 may include any number of ports 125.
  • the ports 125 are coupled (e.g., connected) to each other, for example through the switch fabric 135.
  • one or more of the source devices 120 may function as a destination device 140 and one or more of the destination devices 140 may function as a source device 120.
  • a source device 120 or a destination device 140 may be an input-output device coupled to a port 125 that is an input-output port.
  • the packet engine 130 associated with a port 125 may be located externally of the port 125 and coupled (e.g., connected) to the port 125.
  • the packet switch 105 receives data packets 200 including packet headers 205 and data payloads 215 at ports 125 of the packet switch 105 (e.g., source ports 125) from one or more devices coupled to the ports 125 (e.g., source devices 120).
  • the packet switch 105 selectively routes the data packet 200 to one or more ports 125 of the packet switch 105 (e.g., output ports 125) based on both the packet header 205 and the data payload 215 in the data packet 200.
  • the packet engine 130 routes the data packet 200 to the identified port 125 (e.g., the destination port 125).
  • the packet engine 130 associated with the identified port 125 sends the data packet 200 to the device (e.g., a destination device 140) coupled to the identified port 125.
  • FIG. 8 illustrates a method 800 of routing a data packet through a packet switch, in accordance with an embodiment of the present invention, hi step 805, a data packet including a packet header and a data payload is received, hi one embodiment, a packet engine 130 associated with a port 125 of the packet switch 105 (e.g., a source port 125) receives a data packet 200 from the device coupled to the port 125 (e.g., a source device 120). The method 800 then proceeds to step 810.
  • a packet engine 130 associated with a port 125 of the packet switch 105 e.g., a source port 125
  • receives a data packet 200 from the device coupled to the port 125 e.g., a source device 120.
  • the method 800 then proceeds to step 810.
  • step 925 the data packet is sent to the trace port.
  • the packet engine 130 sends the data packet 200 to the port 125 identified by the packet engine 130 (e.g., the trace port 125) based on the data payload 215 of the data packet 200.
  • the method 900 then proceeds to step 930.
  • the method 900 may include more or fewer steps than the steps 905-930 described above and illustrated in FIG. 9. In some embodiments, one or more of the steps 905-930 of the method 900 may be performed in parallel or substantially simultaneously. In various embodiments, the steps 905-930 of the method 900 maybe performed in a different order than the order described above and illustrated in FIG. 9.
  • the second port comprises a second packet engine configured to generate a second data packet including status data in response to receiving the first data packet, the second packet engine further configured to output the second data packet to the second device.
  • a method comprising: receiving a first data packet including a packet header and a data payload at a first port of a packet switch; identifying a second port of the packet switch based on both the packet header and the data payload of the first data packet; and sending the first data packet to the second port of the packet switch.
  • Concept 17 The method of concept 16, wherein the first data packet conforms to a serial RapidIO format.
  • comparing the first data packet with the at least one data pattern comprises: masking the data packet with a data mask to generate a result; and comparing the result with the at least one data pattern.

Abstract

A packet switch routes data packets based on both packet headers and data payloads in the data packets. The packet switch receives data packets, identifies a destination port of the packet switch for each data packet based on a packet header of the data packet, and routes the data packet to the destination port. Additionally, the packet switch selects data packets among the data packets received by the packet switch based on the data payloads of the received data packets, identifies a trace port of the packet switch for each selected data packet, and routes the selected data packet to the trace port.

Description

CONTENT DRIVEN PACKET SWITCH
BACKGROUND
[0001] A packet based communication system typically includes a packet switch for routing data packets from source devices to destination devices in the communication system. Generally, the packet switch receives a data packet, identifies a destination address in a packet header of the data packet, and routes the data packet to a destination device identified by the destination address. The destination device then processes the data packet.
[0002] In some types of communication systems, a packet header of a data packet includes additional information for routing the data packet. A packet switch in the communication system routes the data packet based on both the destination address and the additional information in the packet header of the data packet. For example, the packet header may include a tag indicating a quality of service for the data packet and the packet switch may route the data packet to a destination device based on both the destination address and the tag. Moreover, the packet switch routes data packets having packet headers containing the same destination address and the same tag to the same destination device. In turn, the destination device processes the data packets. Although these types of communication systems have been successfully employed to route data packets based on additional information in packet headers of the data packets, the additional information in the packet headers of the data packets is often limited by the size and format of the packet headers.
[0003] In light of the above, a need exists for an improved system and method of routing data packets through a packet switch. SUMMARY
[0004] In various embodiments, a packet switch routes data packets based on both packet headers and data payloads in the data packets. In this way, the packet switch routes the data packets based in part on the content of the data payloads in the data packets. In some embodiments, the packet switch receives data packets, selects some of the data packets based on the data payloads of the data packets, and routes each of the selected data packets to both a destination port and a trace port of the packet switch. In further embodiments, a trace buffer in the trace port stores the selected data packets and may output the data packets to a device external of the packet switch, for example to debug the packet switch or analyze packet communications through the packet switch. In some embodiments, the packet switch conforms to a serial RapidIO™ standard.
[0005] A packet switch, in accordance with one embodiment, includes a first port and a second port coupled to the first port. The first port includes a packet engine configured to receive a data packet including a packet header and a data payload, identify the second port based on the data payload of the data packet, and send the data packet to the second port, hi a further embodiment, the packet engine is further configured to identify a third port of the packet switch based on the packet header of the data packet and send the data packet to the third port, hi some embodiments, the packet engine is configured to identify the second port based on both the packet header and the data payload of the data packet.
[0006] A system, in accordance with one embodiment, includes a packet switch, a first device, and a second device. The packet switch includes a first port including a packet engine and a second port coupled to the first port. The first device is coupled to the first port and is configured to send a data packet including a packet header and a data payload to the first port. The packet engine is configured to identify the second port of the packet switch based on the data payload of the data packet and send the data packet to the second port. The second port is configured to output the first data packet to the second device, hi a further embodiment, the packet engine is further configured to identify a third port of the packet switch based on the packet header of the data packet and send the data packet to the third port, hi some embodiments, the packet engine is configured to identify the second port based on both the packet header and the data payload of the data packet.
[0007] A method, in accordance with one embodiment, includes receiving a data packet including a packet header and a data payload at a first port of a packet switch and identifying a second port of the packet switch based on the data payload of the data packet. The method further includes sending the data packet to the second port of the packet switch, hi a further embodiment, the method includes identifying a third port of the packet switch based on the packet header of the data packet and sending the data packet to the third port of the packet switch, hi some embodiments, identifying the second port of the packet switch based on the data payload of the data packet includes identifying the second port of the packet switch based on both the packet header and the data payload of the data packet.
BRIEF DESCRIPTION OF THE DRAWINGS
[0008] The accompanying drawings are included to provide a further understanding of the invention, and are incorporated in and constitute a part of this specification. The drawings illustrate embodiments of the invention, and together with the description, serve to explain the principles of the invention. In the drawings: FIG. 1 is a block diagram of a communication system, in accordance with an embodiment of the present invention;
[0009] FIG. 2 is a block diagram of a data packet, in accordance with an embodiment of the present invention;
[00010] FIG. 3 is a block diagram of a data packet, in accordance with an embodiment of the present invention;
[00011] FIG. 4 is a block diagram of a data pattern, in accordance with an embodiment of the present invention;
[00012] FIG. 5 is a block diagram of a data mask, in accordance with an embodiment of the present invention;
[00013] FIG. 6 is a block diagram of a packet engine, in accordance with an embodiment of the present invention;
[00014] FIG. 7 is a block diagram of a packet engine, in accordance with an embodiment of the present invention;
[00015] FIG. 8 is a flow chart of a method of routing a data packet through a packet switch, in accordance with an embodiment of the present invention; and [00016] FIG. 9 is a flow chart of a method of routing a data packet through a packet switch, in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION
[00017] In various embodiments, a packet switch routes data packets to destination ports of the packet switch based on packet headers of the data packets. Further, the packet switch selects some of the data packets based on data payloads of the data packets, and routes the selected data packets to one or more trace ports in the packet switch. In this way, the packet switch routes each selected data packet to both a destination port and at least one trace port. In further embodiments, the packet switch includes one or more trace buffers in the trace ports for storing data packets received by the trace ports.
[00018] FIG. 1 illustrates a communication system 100, in accordance with an embodiment of the present invention. The communication system 100 includes a packet switch 105, source devices 120, and destination devices 140. Each of the source devices 120 is coupled (e.g., connected) to the packet switch 105 and sends data packets to the packet switch 105. m various embodiments, one or more of the source devices 120 may also receive data packets from the packet switch 105. For example, one or more of the source devices 120 may be input- output devices. Each of the destination devices 140 is coupled (e.g., connected) to the packet switch 105 and receives data packets from the packet switch 105. In various embodiments, one or more of the destination devices 140 may also send data packets to the packet switch 105. For example, one or more of the destination devices 140 may be input-output devices.
[00019] The packet switch 105 includes a configuration module 115, ports 125, and an optional switch fabric 135. Each of the ports 125 includes a packet engine 130 and is coupled (e.g., connected) to a corresponding source device 120 or a corresponding destination device 140. In various embodiments, each of the ports 125 may be input ports, output ports, input- output ports, or any combination thereof. The ports 125 and the configuration module 115 are selectively coupled (e.g., connected) to each other to facilitate communication among the ports 125 and the configuration module 115. In embodiments including the switch fabric 135, each of the ports 125 and the configuration module 115 are coupled (e.g., connected) to the switch fabric 135 and communicate by sending data packets to the switch fabric 135, receiving data packets from the switch fabric 135, or both.
[00020] Pn various embodiments, the packet switch 105 may include any number of ports 125. In further embodiments, the ports 125 are coupled (e.g., connected) to each other, for example through the switch fabric 135. In some embodiments, one or more of the source devices 120 may function as a destination device 140 and one or more of the destination devices 140 may function as a source device 120. For example, a source device 120 or a destination device 140 may be an input-output device coupled to a port 125 that is an input-output port. In some embodiments, the packet engine 130 associated with a port 125 may be located externally of the port 125 and coupled (e.g., connected) to the port 125.
[00021] The configuration module 115 receives commands (e.g., maintenance commands) and configures the ports 125 of the packet switch 105 based on the commands. In various embodiments, one or more of the ports 125 of the packet switch 105 receive commands from one or more of the devices coupled to the packet switch 105 (e.g., the source devices 120 or the destination devices 140) and send the commands to the configuration module 115.
[00022] In some embodiments, the configuration module 115 receives commands through an optional communication channel 110 instead of receiving the commands from one or more of the ports 125 of the packet switch 105. In other embodiments, the configuration module 115 may receive commands through the communication channel 110 or ports 125 of the packet switch 105, or both. In some embodiments, the packet switch 105 conforms to a serial RapidIO standard and operates on data packets conforming to the serial RapidIO standard.
[00023] FIG. 2 illustrates a data packet 200, in accordance with an embodiment of the present invention. The data packet 200 includes a packet header 205 and a data payload 215. Moreover, the packet header 205 includes a destination identifier 210 and the data payload 215 includes one or more data values 220. In various embodiments, the packet header 205 may include information in addition to the destination identifier 210. For example, the packet header 205 may include tags or data fields containing additional information.
[00024] Each of the data values 220 in the data payload 215 includes one or more data bits of the data payload 215 but need not include the same number of data bits. For example, the data packet 200 may be part of a voice communication and the data value 220 in the data payload 215 of the data packet 200 may be a customer identifier for the voice communication. As a further example, another data value 220 in the data payload 215 of the data packet 200 may indicate a quality of service for the voice communication. Although three data values 220 are illustrated in FIG. 2, the data payload 215 may have more or fewer than three data values 220 in other embodiments.
[00025] In operation, the packet switch 105 receives data packets 200 including packet headers 205 and data payloads 215 at ports 125 of the packet switch 105 (e.g., source ports 125) from one or more devices coupled to the ports 125 (e.g., source devices 120). The packet switch 105 selectively routes the data packet 200 to one or more ports 125 of the packet switch 105 (e.g., output ports 125) based on both the packet header 205 and the data payload 215 in the data packet 200.
[00026] In one embodiment, a port 125 of the packet switch 105 (e.g., a source port 125) receives a data packet 200 and the packet engine 130 associated with the port 125 identifies another port 125 of the packet switch 105 (e.g., a destination port 125) based on a data value 220 in a data payload 215 of the data packet 200. For example, the packet engine 130 may identify the port 125 of the packet switch 105 (e.g., the destination port 125) based on both the destination identifier 210 in the packet header 205 of the data packet 200 and a data value 220 in the data payload 215 of the data packet 200. Additionally, the packet engine 130 routes the data packet 200 to the identified port 125 (e.g., the destination port 125). hi a further embodiment, the packet engine 130 associated with the identified port 125 sends the data packet 200 to the device (e.g., a destination device 140) coupled to the identified port 125.
[00027] In another embodiment, a port 125 of the packet switch 105 (e.g., a source port 125) receives a data packet 200 and the packet engine 130 associated with the port 125 identifies a port 125 of the packet switch 105 (e.g., a destination port 125) based on a destination identifier 210 of the data packet 200 and sends the data packet 200 to the identified port 125. ha turn the identified port 125 sends the data packet 200 to the device (e.g., a destination device 140) coupled to the identified port 125. Additionally, the packet engine 130 identifies a port 125 of the packet switch 105 (e.g., a trace port 125) based on a data value 220 in a data payload 215 of the data packet 200. For example, the packet engine 130 may identify the port 125 of the packet switch 105 (e.g., the trace port 125) based on both the destination identifier 210 in the packet header 205 of the data packet 200 and a data value 220 in the data payload 215 of the data packet 200. Additionally, the packet engine 130 sends the data packet 200 to the identified port 125 (e.g., the trace port 125). In this way, the packet engine 130 sends the data packet 200 to one port 125 (e.g., the destination port 125) based on the destination identifier 210 of the data packet 200 and to another port 125 (e.g., the trace port 125) based on the data value 220 in the data payload 215 of the data packet 200.
[00028] In a further embodiment, the port 125 identified based on the data value 220 in the data packet 200 (e.g., the trace port 125) sends the data packet 200 to a device coupled to that port 125 and located externally of the packet switch 105 (e.g., a destination device 140) and the device processes the data packet 200. For example, the device coupled to the port 125 may analyze the data packet 200 along with other data packets 200 received by the device from the port 125 to debug the packet switch 105.
[00029] In various embodiments, the packet switch 105 is programmable to select a data packet 200 received by the packet switch 105 based on the data payload 215 of the data packet 200. In this way, the packet switch 105 selects the data packet 200 based on the content of the data payload 215 in the data packet 200 and a source of the data packet 200 (e.g., a source device 120) need not set a tag in the packet header 205 of the data packet 200 indicating the content of the data payload 215. For example, the packet switch 105 may be programmed to select a data packet 200 that is part of a voice communication based on data, such as a customer identifier, in the data payload 215 of the data packet 200. In some embodiments, the packet switch 105 may be programmed in real time during operation of the packet switch 105.
[00030] FIG. 3 illustrates the data packet 200, in accordance with an embodiment of the present invention. The data packet 200 includes a number of sequential data bits do-dn representing data in the packet header 205 and the data payload 215 of the data packet 200. For example, the number of sequential data bits do-dn maybe a series of data bits in which a first number of bits in the series represents the packet header 205 of the data packet 200 and a second number of bits following the first number of bits in the series represents the data payload 215 of the data packet 200. Moreover, the data bits representing the data payload 215 of the data packet 200 also represent one or more data values 220 in the data payload 215. hi various embodiments, the sequence of data bits do-dn represents a sequence of data units, such as data bytes or data words, in the data packet 200. For example, the sequence of data bits do- dn may be formed by concatenating a sequence of data words in the data packet 200 according to the order of the data words in the data packet 200.
[00031] FIG. 4 illustrates a data pattern 400, in accordance with an embodiment of the present invention. The data pattern 400 includes a number of sequential data bits V0-Vn representing data in the data pattern 400. hi operation, a packet engine 130 associated with a port 125 in the packet switch 105 selects data packets 200 received at the port 125 based on the data pattern 400 and routes the data packets 200 to both a destination port 125 based on the packet header 205 of the data packet 200 and a trace port 125 based on the data payload 215 in the data packet 200. hi this way, the packet switch 105 sends the data packets 200 to both the trace port 125 and the destination port 125 based on both the packet header 205 and the data payload 215 of the data packet 200.
[00032] hi one embodiment, the packet engine 130 selects a data packet 200 by comparing the data bits do-dn in the data packet 200 with the data bits vo-vn in the data pattern 400. If the data bits do-dn in the data packet 200 match the data bits vo-vn in the data pattern 400, the packet engine 130 selects the data packet 200. hi this way, the packet engine 130 identifies the data packet 200 for routing to the trace port 125. hi another embodiment, the packet engine 130 selects (e.g., identifies) a data packet 200 by comparing a portion of the data bits do-dn in the data packet 200 with a portion of the data bits V0-Vn in the data pattern 400. If the portion of data bits do-dn in the data packet 200 match the portion of data bits V0-Vn in the data pattern 400, the packet engine 130 selects the data packet 200 for routing to the trace port 125.
[00033] In various embodiments, the data pattern 400 represents both a destination identifier 210 and a data value 220, and the packet engine 130 selects a data packet 200 if the destination identifier 210 and the data value 220 in the data pattern 400 match a destination identifier 210 and a data value 220 in the data packet 200. In other embodiments, the data pattern 400 includes more than one data value 220 and the packet engine 130 selects a data packet 200 if the destination identifier 210 and the data values 220 in the data pattern 400 match the destination identifier 210 and data values 220 in the data packet 200.
[00034] Pn some embodiments, the packet engine 130 includes more than one data pattern 400 and compares a data packet 200 received by the packet engine 130 with each of the data patterns 400. If the data packet 200 matches one of the data patterns 400, the packet engine 130 identifies a port 125 (e.g., a trace port 125) based on the data packet 200 and sends the data packet 200 to the identified port 125. hi another embodiment, if the data packet 200 matches one or more of the data patterns 400, the packet engine 130 identifies a port 125 (e.g., a trace port 125) based on the data packet 200 and sends the data packet 200 to the identified port 125. In still another embodiment, the packet engine 130 identifies a port 125 for each data pattern 400 that matches the data packet 200 and sends the data packet 200 to each of the identified ports 125.
[00035] hi some embodiments, the data pattern 400 represents one or more data values 220 and the packet engine 130 selects a data packet 200 if each of the data values 220 in the data pattern 400 match a corresponding data value 220 in the data packet 200. In this way, the packet engine 130 selects the data packet 200 based on the data payload 215 of the data packet 200. Further, the packet engine 130 identifies a port 125 based on the selected data packet 200 and sends the selected data packet 200 to the identified port 125 (e.g., a destination port 125 or a trace port 125).
[00036] In some embodiments, a port 125 receives data packet 200 as a bit stream and the packet engine 130 of the port 125 performs a bit-by-bit comparison of the data packet 200 or a portion of the data packet 200 with one or more data patterns 400. In these embodiments, the port 125 need not receive the entire data packet 200 before the packet engine 130 performs a bit-by-bit comparison of the data packet 200 or portions thereof with a data pattern 400. Moreover, the port 125 need not store the data packet 200 before performing the bit-by-bit comparison. For example, the packet engine 130 may perform a bit-by-bit comparison of the data payload 215 of the data packet 200 with one or more data patterns 400 while the port 125 is receiving the data packet 200.
[00037] FIG. 5 illustrates a data mask 500, in accordance with an embodiment of the present invention. The data mask 500 includes a number of sequential data bits mo-mn corresponding to the data bits do-dn in the data packet 200. In various embodiments, a packet engine 130 associated with a port 125 in the packet switch 105 performs a masking operation, such as a bitwise logical operation, on the data bits do-dn of a data packet 200 and compares the result to a data pattern 400. If the result of the masking operation matches the data pattern 400, the packet engine 130 selects the data packet 200 for routing to a trace port 125.
[00038] In one embodiment, a data bit in the data mask 500 (e.g., a data bit mo-mn) has a value of zero to mask out the corresponding data bit in the data packet 200 (e.g., a data bit d0- dn). For example, the packet engine 130 may perform a masking operation by performing a bitwise logical AND operation on the data packet 200 and the data mask 500. In this embodiment, each data bit in the data packet 200 (e.g., a data bit do-dn) corresponding to a data bit in the data mask 500 (e.g., a data bit mo-mn) having a value of zero is a "don't care" data bit.
[00039] FIG. 6 illustrates a packet engine 130, in accordance with an embodiment of the present invention. The packet engine 130 includes one or more comparators 600 and a memory 605 coupled to each of the comparators 600. Each of the comparators 600 compares data packets 200 received by the packet engine 130 with a data pattern 400 associated with the comparator 600. In various embodiments, the memory 605 stores the data patterns 400 and a comparator 600 of the packet engine 130 accesses a data pattern 400 associated with the comparator 600 from the memory 605 and compares the data pattern 400 with a data packet 200 received by the packet engine 130. m further embodiments, the memory 605 stores the data masks 500. In these further embodiments, a comparator accesses a data mask 500 associated with the comparator 600 from the memory 605 and uses the data mask 500 to perform a masking operation on a data packet 200 received by the packet engine 130 to generate an intermediate result. Further, the comparator 600 compares the intermediate result with the data pattern 400 associated with the comparator 600 to determine whether the data packet 200 matches the data pattern 400.
[00040] In some embodiments, the packet engine 130 receives commands from the configuration module 115, for example through the switch fabric 135, and processes the commands to configure the port 125 associated with the packet engine 130. In various embodiments, the packet engine 130 receives a data packet 200 including both a command and a data pattern 400 from the configuration module 115 and stores the data pattern 400 in the memory 605 based on the command. In some embodiments, the data packet 200 also includes data for associating the data pattern 400 with one of the comparators 600 in the packet engine 130. In these embodiments, the packet engine 130 associates the data pattern 400 with the comparator 600, for example by storing the data pattern 400 in a memory location of the memory 605 associated with the comparator 600.
[00041] hi various embodiments, the packet engine 130 receives a data packet 200 including both a command and a data mask 500 from the configuration module 115 and stores the data mask 500 in the memory 605 based on the command. In some embodiments, the data packet 200 also includes data for associating the data mask 500 with one of the comparators 600 in the packet engine 130. In these embodiments, the packet engine 130 associates the data mask 500 with the comparator 600, for example by storing the data mask 500 in a memory location of the memory 605 associated with the comparator 600.
[00042] Pn operation, the packet engine 130 receives a data packet 200 from the device coupled to the packet engine 130 (e.g., a source device 120 or a destination device 140), identifies a destination port 125 based on the packet header 205 of the data packet 200, and sends the data packet 200 to the destination port 125. Additionally, the comparator 600 in the packet engine 130 compares the data packet 200 received by the packet engine 130 with the data pattern 400 to determine whether the data packet 200 matches the data pattern 400. If the data packet 200 matches the data pattern 400, the packet engine 130 identifies a trace port 125 based on the data payload 215 in the data packet 200 and sends the data packet 200 to the trace port 125. [00043] In one embodiment, the packet engine 130 sends the data packet 200 to the destination port 125 and the trace port 125 by multicasting the data packet 200 to the destination port 125 and the trace port 125. Pn another embodiment, the packet engine 130 stores the data packet 200 in the memory 605, sends the data packet 200 to the destination port 125, and sends the data packet 200 to the trace port 125. In still another embodiment, the packet engine 130 duplicates the data packet 200 and sends one of the data packets 200 to the destination port 125 and the other data packet 200 to the trace port 125. In various embodiments, the packet engine 130 may send the data packet 200 to the destination port 125 and the trace port 125 sequentially, in parallel with each other, or substantially simultaneously
[00044] FIG. 7 illustrates a packet engine 130, in accordance with an embodiment of the present invention. The packet engine 130 is coupled to a trace port 125 of the packet switch 105 and includes a trace buffer 700 for storing data packets 200 received by the packet engine 130. In various embodiments, the trace buffer 700 stores the data packets 200 received by the packet engine 130 based on one or more trace events, hi one embodiment, the configuration module 115 generates a start trace event and an input port 125 begins to send data packets 200 received by the input port 125 to the trace port 125 in response to the start trace event. Further, the configuration module 115 generates a stop trace event and the input port 125 stops sending data packets 200 received by the input port 125 to the trace port 125 in response to the stop trace event. For example, the input port 125 may begin comparing data packets 200 received by the input port 125 with one or more data patterns 400 in response to a start trace event and send those data packets 200 that match one or more of the data patterns 400 to the trace port 125. Further, the input port 125 may stop comparing data packets 200 received by the input port 125 with the data patterns 400 and stop sending data packets 200 to the trace port 125 in response to a stop trace event. In some embodiments, the configuration module 115 generates a trace event by writing a data value into a register based on a command received by the configuration module 115. hi various embodiments, the configuration module 115 generates a start trace event upon power up or reset of the packet switch 105.
[00045] hi one embodiment, the packet engine 130 of the input port 125 generates a data packet 200 including status data in response to a start trace event and sends the generated data packet 200 to the device coupled to the trace port 125 (e.g., a source device 120 or a destination device 140). For example, the generated data packet 200 may include data indicating that the start trace event has occurred. In response to receiving the generated data packet 200, the device may store or process data packets 200 received from the trace port 125, or both, hi one embodiment, the generated data packet 200 includes a port write command conforming to a serial RapidIO format.
[00046] hi one embodiment, the packet engine 130 of the input port 125 generates a data packet 200 including status data in response to a stop trace event and sends the generated data packet 200 to the device coupled to the trace port 125 (e.g., a source device 120 or a destination device 140). For example, the generated data packet 200 may include data indicating that the stop trace event has occurred, hi response to receiving the generated data packet 200, the device may process other data packets 200 previously received from the trace port 125. For example, the device may process data packets 200 received from the trace port 125 between a data packet 200 indicating that a start trace event has occurred and another data packet 200 indicating that a stop trace event has occurred, hi one embodiment, the generated data packet 200 includes a port write command conforming to a serial RapidIO format. [00047] In other embodiments the trace buffer 700 is optional. In some embodiments without the trace buffer 700, the trace port 125 outputs data packets 200 received by the trace port 125 to a device external of the packet switch 105 (e.g., a destination device 140) coupled to the trace port 125. In some embodiments, a destination device 140 may be coupled to the trace port 125 and decoupled from the trace port 125 during operation of the packet switch 105. hi these embodiments, the trace port 125 outputs data packets 200 received by the trace port 125 and the destination device 140 receives data packets 200 output from the trace port 125 when the destination device 140 is coupled to the trace port 125. The destination device 140 may then debug the packet switch 105 or analyze communications through the packet switch 105 based on the data packets 200 received from the trace port 125. For example, the destination device 140 may be a portable trace analyzer used for analyzing communications through the packet switch 105 when the packet switch 105 is deployed in the field.
[00048] FIG. 8 illustrates a method 800 of routing a data packet through a packet switch, in accordance with an embodiment of the present invention, hi step 805, a data packet including a packet header and a data payload is received, hi one embodiment, a packet engine 130 associated with a port 125 of the packet switch 105 (e.g., a source port 125) receives a data packet 200 from the device coupled to the port 125 (e.g., a source device 120). The method 800 then proceeds to step 810.
[00049] hi step 810, a destination port is identified based on the data payload in the data packet. IQ one embodiment, the packet engine 130 identifies a port 125 of the packet switch 105 (e.g., a destination port 125) based on the data payload 215 in the data packet 200. For example, the packet engine 130 may identify a destination port 125 based on the destination identifier 210 in the packet header 205 of the data packet 200 and one or more data values 220 in the data payload 215 of the data packet 200. In another embodiment, the packet engine 130 identifies a port 125 of the packet switch 105 (e.g., a destination port 125) based on both the packet header 205 and the data payload 215 in the data packet 200. For example, the packet engine 130 may identify a destination port 125 based on both a destination identifier 210 of the data packet 200 and one or more data values 220 in the data payload 215 of the data packet 200. The method 800 then proceeds to step 815.
[00050] hi step 815, the data packet is sent to the destination port. In one embodiment, the packet engine 130 sends the data packet 200 to the port 125 identified by the packet engine 130 (e.g., the destination port 125). The method 800 then ends.
[00051] hi various embodiments, the method 800 may include more or fewer steps than the steps 805-815 described above and illustrated in FIG. 8. hi some embodiments, one or more of the steps 805-815 of the method 800 may be performed in parallel or substantially simultaneously.
[00052] FIG. 9 illustrates a method 900 for routing a data packet through a packet switch, in accordance with an embodiment of the present invention, hi step 905, a data packet 200 including a packet header 205 and a data payload 215 is received, hi one embodiment, a packet engine 130 associated with a port 125 of the packet switch 105 (e.g., a source port 125) receives a data packet 200 from a device coupled to the port 125 (e.g., a source device 120). The method 900 then proceeds to step 910.
[00053] hi step 910, a destination port is identified based on the packet header in the data packet, hi one embodiment, the packet engine 130 identifies a port 125 of the packet switch 105 (e.g., a destination port 125) based on the packet header 205. For example, the packet engine 130 may identify the destination port 125 based on the destination identifier 210 in the packet header 205. The method 900 then proceeds to step 915.
[00054] hi step 915, the data packet is sent to the destination port, hi one embodiment, the packet engine 130 sends the data packet 200 to the port 125 identified by the packet engine 130 (e.g., the destination port 125) based on the packet header 205 of the data packet 200. The method 900 then proceeds to step 920.
[00055] In step 920, a trace port is identified based on the data payload in a data packet. In one embodiment, the packet engine 130 identifies a port 125 of the packet switch 105 (e.g., a trace port 125) based on the data payload 215 in the data packet 200. For example, the packet engine 130 may identify a trace port 125 based on the data payload 215 of the data packet 200. In another embodiment, the packet engine 130 identifies a port 125 of the packet switch 105 (e.g., a trace port 125) based on both the packet header 205 and the data payload 215 in the data packet 200. For example, the packet engine 130 may identify a trace port 125 based on the destination identifier 210 in the packet header 205 and one or more data values 220 in the data payload 215 of the data packet 200. The method 900 then proceeds to step 925.
[00056] In step 925, the data packet is sent to the trace port. In one embodiment, the packet engine 130 sends the data packet 200 to the port 125 identified by the packet engine 130 (e.g., the trace port 125) based on the data payload 215 of the data packet 200. The method 900 then proceeds to step 930.
[00057] hi optional step 930, the trace port generates a data packet including status data. Li one embodiment, the port 125 that received the data packet 200 identified by the packet engine 130 (e.g., the trace port 125) based on the data payload 215 of the data packet 200 generates a data packet 200 including status data. For example, the packet engine 130 associated with the trace port 125 may generate the data packet 100 including status data indicating that a stop trace event has occurred. In one embodiment, the generated data packet 200 includes a port write command conforming to a serial RapidIO format. The method 900 then ends.
[00058] In various embodiments, the method 900 may include more or fewer steps than the steps 905-930 described above and illustrated in FIG. 9. In some embodiments, one or more of the steps 905-930 of the method 900 may be performed in parallel or substantially simultaneously. In various embodiments, the steps 905-930 of the method 900 maybe performed in a different order than the order described above and illustrated in FIG. 9.
[00059] hi broad summary, this writing discloses the following. A packet switch routes data packets based on both packet headers and data payloads in the data packets. The packet switch receives data packets, identifies a destination port of the packet switch for each data packet based on a packet header of the data packet, and routes the data packet to the destination port. Additionally, the packet switch selects data packets among the data packets received by the packet switch based on the data payloads of the received data packets, identifies a trace port of the packet switch for each selected data packet, and routes the selected data packet to the trace port.
[00060] Although the invention has been described with reference to particular embodiments thereof, it will be apparent to one of ordinary skill in the art that modifications to the described embodiment may be made without departing from the spirit of the invention. Accordingly, the scope of the invention will be defined by the attached claims not by the above detailed description. CONCEPTS
As short summaries, this writing has disclosed at least the following broad concepts:
Concept 1. A packet switch, comprising: a first port comprising a first packet engine configured to receive a first data packet including a packet header and a data payload; and a second port coupled to the first port, the first packet engine further configured to identify the second port based on both the packet header and the data payload of the first data packet and send the first data packet to the second port.
Concept 2. The packet switch of concept 1, wherein the first data packet conforms to a serial RapidIO format.
Concept 3. The packet switch of concept 1, wherein the second port is a trace port.
Concept 4. The packet switch of concept 1, wherein the first packet engine is further configured to identify the second port based on both the packet header and the data payload of the first data packet by comparing the first data packet with a data pattern.
Concept 5. The packet switch of concept 4, wherein the first packet engine is further configured to compare the first data packet with the data pattern by masking the data packet with a data mask to generate a result and comparing the result with the data pattern. Concept 6. The packet switch of concept 1, further comprising a third port coupled to the first port, wherein the first packet engine is further configured to identify the third port based on the packet header of the first data packet and send the first data packet to the third port.
Concept 7. The packet switch of concept 1, wherein the second port comprises a second packet engine configured to generate a second data packet including status data in response to a trace event.
Concept 8. The packet switch of concept 7, wherein the second data packet conforms to a serial RapidIO format and comprises a port write command.
Concept 9. A system, comprising: a packet switch comprising a first port comprising a first packet engine and a second port coupled to the first port; a first device coupled to the first port and configured to send a first data packet comprising a packet header and a data payload to the first port, the first packet engine configured to identify the second port based on both the packet header and the data payload of the first data packet and send the first data packet to the second port; and a second device coupled to the second port, the second port configured to output the first data packet to the second device.
Concept 10. The system of concept 9, wherein the first data packet conforms to a serial RapidIO format.
Concept 11. The system of concept 9, wherein the second port is a trace port. Concept 12. The system of concept 9, wherein the first packet engine is further configured to identify the second port based on the data payload of the first data packet by comparing the first data packet with a data pattern.
Concept 13. The system of concept 12, wherein the first packet engine is further configured to compare the first data packet with the data pattern by masking the data packet with a data mask to generate a result and comparing the result with the data pattern.
Concept 14. The system of concept 9, further comprising a third port coupled to the first port, wherein the first packet engine is further configured to send the first data packet to the third port based on the packet header of the first data packet.
Concept 15. The system of concept 9, wherein the second port comprises a second packet engine configured to generate a second data packet including status data in response to receiving the first data packet, the second packet engine further configured to output the second data packet to the second device.
Concept 16. A method comprising: receiving a first data packet including a packet header and a data payload at a first port of a packet switch; identifying a second port of the packet switch based on both the packet header and the data payload of the first data packet; and sending the first data packet to the second port of the packet switch. Concept 17. The method of concept 16, wherein the first data packet conforms to a serial RapidIO format.
Concept 18. The method of concept 16, wherein the second port is a trace port.
Concept 19. The method of concept 16, wherein identifying the second port of the packet switch based on both the packet header and the data payload of the first data packet comprises comparing the first data packet with at least one data pattern.
Concept 20. The method of claim 19, wherein comparing the first data packet with the at least one data pattern comprises: masking the data packet with a data mask to generate a result; and comparing the result with the at least one data pattern.
Concept 21. The method of concept 16, further comprising: identifying a third port of the packet switch based on the packet header of the data packet; and sending the first data packet to the third port of the packet switch.

Claims

CLAIMS What is claimed is:
1. A packet switch, comprising: a first port comprising a first packet engine configured to receive a first data packet including a packet header and a data payload; and a second port coupled to the first port, the first packet engine further configured to identify the second port based on both the packet header and the data payload of the first data packet and send the first data packet to the second port.
2. The packet switch of claim 1, wherein the first data packet conforms to a serial RapidIO format.
3. The packet switch of claim 1 , wherein the second port is a trace port.
4. The packet switch of claim 1 , wherein the first packet engine is further configured to identify the second port based on both the packet header and the data payload of the first data packet by comparing the first data packet with a data pattern.
5. The packet switch of claim 4, wherein the first packet engine is further configured to compare the first data packet with the data pattern by masking the data packet with a data mask to generate a result and comparing the result with the data pattern.
6. The packet switch of claim 1, further comprising a third port coupled to the first port, wherein the first packet engine is further configured to identify the third port based on the packet header of the first data packet and send the first data packet to the third port.
7. The packet switch of claim 1 , wherein the second port comprises a second packet engine configured to generate a second data packet including status data in response to a trace event.
8. The packet switch of claim 7, wherein the second data packet conforms to a serial RapidIO format and comprises a port write command.
9. A system, comprising: a packet switch comprising a first port comprising a first packet engine and a second port coupled to the first port; a first device coupled to the first port and configured to send a first data packet comprising a packet header and a data payload to the first port, the first packet engine configured to identify the second port based on both the packet header and the data payload of the first data packet and send the first data packet to the second port; and a second device coupled to the second port, the second port configured to output the first data packet to the second device.
10. The system of concept 9, wherein the first data packet conforms to a serial RapidIO format.
11. The system of claim 9, wherein the second port is a trace port.
12. The system of claim 9, wherein the first packet engine is further configured to identify the second port based on the data payload of the first data packet by comparing the first data packet with a data pattern.
13. The system of claim 12, wherein the first packet engine is further configured to compare the first data packet with the data pattern by masking the data packet with a data mask to generate a result and comparing the result with the data pattern.
14. The system of claim 9, further comprising a third port coupled to the first port, wherein the first packet engine is further configured to send the first data packet to the third port based on the packet header of the first data packet.
15. The system of claim 9, wherein the second port comprises a second packet engine configured to generate a second data packet including status data in response to receiving the first data packet, the second packet engine further configured to output the second data packet to the second device.
16. A method comprising : receiving a first data packet including a packet header and a data payload at a first port of a packet switch; identifying a second port of the packet switch based on both the packet header and the data payload of the first data packet; and sending the first data packet to the second port of the packet switch.
17. The method of claim 16, wherein the first data packet conforms to a serial RapidIO format.
18. The method of claim 16, wherein the second port is a trace port.
19. The method of claim 16, wherein identifying the second port of the packet switch based on both the packet header and the data payload of the first data packet comprises comparing the first data packet with at least one data pattern.
20. The method of claim 19, wherein comparing the first data packet with the at least one data pattern comprises: masking the data packet with a data mask to generate a result; and comparing the result with the at least one data pattern.
21. The method of claim 16, further comprising: identifying a third port of the packet switch based on the packet header of the data packet; and sending the first data packet to the third port of the packet switch.
PCT/US2009/032025 2008-03-19 2009-01-26 Content driven packet switch WO2009117175A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/051,720 2008-03-19
US12/051,720 US7940762B2 (en) 2008-03-19 2008-03-19 Content driven packet switch

Publications (1)

Publication Number Publication Date
WO2009117175A1 true WO2009117175A1 (en) 2009-09-24

Family

ID=41088861

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2009/032025 WO2009117175A1 (en) 2008-03-19 2009-01-26 Content driven packet switch

Country Status (2)

Country Link
US (1) US7940762B2 (en)
WO (1) WO2009117175A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9054974B2 (en) * 2012-07-30 2015-06-09 Cisco Technology, Inc. Reliably transporting packet streams using packet replication
US9001830B2 (en) * 2012-09-18 2015-04-07 Cisco Technology, Inc. Ultra low latency multi-protocol network device
US9055004B2 (en) 2012-09-18 2015-06-09 Cisco Technology, Inc. Scalable low latency multi-protocol networking device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930703775A (en) * 1990-12-12 1993-11-30
US5561669A (en) * 1994-10-26 1996-10-01 Cisco Systems, Inc. Computer network switching system with expandable number of ports
KR20050115195A (en) * 2004-06-03 2005-12-07 광주과학기술원 Asynchronous switch based on butterfly fat-tree for network on chip applications
US20070086454A1 (en) * 2001-05-31 2007-04-19 Ron Grinfeld TCP Receiver Acceleration

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US6430183B1 (en) * 1997-09-18 2002-08-06 International Business Machines Corporation Data transmission system based upon orthogonal data stream mapping
US6219706B1 (en) * 1998-10-16 2001-04-17 Cisco Technology, Inc. Access control for networks
US6535511B1 (en) * 1999-01-07 2003-03-18 Cisco Technology, Inc. Method and system for identifying embedded addressing information in a packet for translation between disparate addressing systems
US7107612B1 (en) * 1999-04-01 2006-09-12 Juniper Networks, Inc. Method, apparatus and computer program product for a network firewall
EP1260061A2 (en) * 2000-02-22 2002-11-27 Top Layer Networks, Inc. System and method for flow mirroring in a network switch
US7020153B2 (en) * 2000-07-03 2006-03-28 International Business Machines Corporation Method and system for processing data packets
US7266110B1 (en) * 2000-07-20 2007-09-04 Lucent Technologies Inc. Apparatus and method for hybrid telecommunications switching
US7130301B2 (en) * 2000-12-28 2006-10-31 International Business Machines Corporation Self-route expandable multi-memory packet switch with distributed scheduling means
US7130302B2 (en) * 2000-12-28 2006-10-31 International Business Machines Corporation Self-route expandable multi-memory packet switch
US7142515B2 (en) * 2001-01-11 2006-11-28 International Business Machines Corporation Expandable self-route multi-memory packet switch with a configurable multicast mechanism
US7246173B2 (en) * 2001-04-16 2007-07-17 Nokia Corporation Method and apparatus for classifying IP data
JP3642301B2 (en) * 2001-07-31 2005-04-27 日本電気株式会社 Packet monitoring method
US20030212937A1 (en) * 2002-05-07 2003-11-13 Marc Todd System and method for exposing state based logic signals within an electronics system over an existing network conduit
US20080196099A1 (en) * 2002-06-10 2008-08-14 Akonix Systems, Inc. Systems and methods for detecting and blocking malicious content in instant messages
US20040083305A1 (en) * 2002-07-08 2004-04-29 Chung-Yih Wang Packet routing via payload inspection for alert services
US7548944B2 (en) * 2003-07-15 2009-06-16 Intel Corporation Statistics collection framework for a network processor
US7474666B2 (en) * 2003-09-03 2009-01-06 Cisco Technology, Inc. Switch port analyzers
US7613775B2 (en) * 2003-11-25 2009-11-03 Freescale Semiconductor, Inc. Network message filtering using hashing and pattern matching
US7453874B1 (en) * 2004-03-30 2008-11-18 Extreme Networks, Inc. Method and system for incrementally updating a checksum in a network data packet
US7467358B2 (en) * 2004-06-03 2008-12-16 Gwangju Institute Of Science And Technology Asynchronous switch based on butterfly fat-tree for network on chip application
US7433363B2 (en) * 2004-08-23 2008-10-07 The United States Of America As Represented By The Secretary Of The Navy Low latency switch architecture for high-performance packet-switched networks
US7848332B2 (en) * 2004-11-15 2010-12-07 Cisco Technology, Inc. Method and apparatus for classifying a network protocol and aligning a network protocol header relative to cache line boundary
GB2420883A (en) * 2004-12-02 2006-06-07 3Com Corp Examining data patterns according to rules stored in content addressable memories
US7443849B2 (en) * 2004-12-30 2008-10-28 Cisco Technology, Inc. Mechanisms for detection of non-supporting NAT traversal boxes in the path
US20060264178A1 (en) * 2005-05-20 2006-11-23 Noble Gayle L Wireless diagnostic systems
WO2007135490A1 (en) * 2006-05-24 2007-11-29 Freescale Semiconductor, Inc. Method and system for storing data from a plurality of processors
US7769869B2 (en) * 2006-08-21 2010-08-03 Citrix Systems, Inc. Systems and methods of providing server initiated connections on a virtual private network
US9195462B2 (en) * 2007-04-11 2015-11-24 Freescale Semiconductor, Inc. Techniques for tracing processes in a multi-threaded processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930703775A (en) * 1990-12-12 1993-11-30
US5561669A (en) * 1994-10-26 1996-10-01 Cisco Systems, Inc. Computer network switching system with expandable number of ports
US20070086454A1 (en) * 2001-05-31 2007-04-19 Ron Grinfeld TCP Receiver Acceleration
KR20050115195A (en) * 2004-06-03 2005-12-07 광주과학기술원 Asynchronous switch based on butterfly fat-tree for network on chip applications

Also Published As

Publication number Publication date
US20090238184A1 (en) 2009-09-24
US7940762B2 (en) 2011-05-10

Similar Documents

Publication Publication Date Title
US10735221B2 (en) Flexible processor of a port extender device
US20210243107A1 (en) Explicit routing with network function encoding
US9118576B2 (en) Network device with a programmable core
US6347087B1 (en) Content-based forwarding/filtering in a network switching device
US8913617B1 (en) Packet processor for altering a header portion of a data packet
US7773600B2 (en) Device for flow classifying and packet forwarding device with flow classify function
CN101573913B (en) Method and apparatus for improved multicast routing
US8520529B2 (en) Reordering network traffic
US20110110382A1 (en) Distribution of Packets Among PortChannel Groups of PortChannel Links
US9276853B2 (en) Hashing of network packet flows for efficient searching
CN110071878B (en) Message flow statistical method and device and electronic equipment
JP2006020317A (en) Joint pipelining packet classification, and address search method and device for switching environments
CN102739816B (en) Unaddressed device communication from within an mpls network
US20120236866A1 (en) Communication system and communication device
US7516364B2 (en) Method for testing network devices using breakpointing
US6807183B1 (en) Arrangement for reading a prescribed location of a FIFO buffer in a network switch port
KR20030036700A (en) Apparatus and method for identifying data packet at wire rate on a network switch port
US7394810B2 (en) Layer 2 switch and method of processing expansion VLAN tag of layer 2 frame
US7940762B2 (en) Content driven packet switch
US7436776B2 (en) Communication test device
US7920568B2 (en) Frame transmission apparatus
US20100172364A1 (en) Flexible queue and stream mapping systems and methods
JP2014007501A (en) Communication device
US20080123675A1 (en) Data transmission apparatus and data transmission method
US8351341B1 (en) Filtering to protect class of service

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09723481

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09723481

Country of ref document: EP

Kind code of ref document: A1