Modern packet optical communication networks are composed of two separate domains, the L2/L3 packet domain and the L0/L1 optical domain. The L0 layer is also called the physical layer (See Open Systems Interconnect Model) and uses a bit protocol data unit (PDU) to transmit and receive raw bit streams over a physical medium (e.g. a fiber optic cable). The L1 layer is also called the data link layer (See OSI model) and uses a frame PDU for transmission of data frames between two nodes connected by a physical medium (e.g. IEEE 802.2, Ethernet, IEEE 802.11, etc.). The L2 layer is also called the network layer and uses a packet PDU for structuring and managing a multi-node network, including addressing, routing and traffic control (e.g. IPv4, IPv6, etc.). Layer 3 is also called the transport layer and uses a segment PDU for transmission of data segments between points in a network, including segmentation, acknowledgement, and multiplexing etc. The L0/L1 optical domain is composed of the L0 and L1 layers and is primarily focused on protocols for transmission of data over the physical medium while the L2/L3 packet domain is composed of the L2 and L3 layers and is primarily focused on protocols for address, routing, and transport of data between nodes (e.g. switches, routers) of a network. These nodes may be L0/L1 devices that operate in the L0 and L1 layers or L2/L3 devices that operate in the L2 and L3 layers. In practice, the packet domain is only aware of L2/L3 devices and the optical domain is only aware of L0/L1 devices, but a gateway device is aware of both domains.
For example, Segment Routing (SR, see Internet Engineering Task Force RFC 7855 incorporated herein by reference) is a layer 3 protocol that uses segments to route data packets through a packet optical network. SR leverages source controlled routing for data packets wherein the source node chooses a path for a packet through a packet optical network and encodes the path in the packet header of the packet as an ordered list of segments or labels. A conventional segment/label corresponds to a L2/L3 device or node (i.e. layer 2/layer 3 address for a node). An ordered list of segments/labels is encoded as a stack of segments/labels. As the packet arrives at each L2/L3 node, the current node will use the segment/label at the top of the list of segments/labels to forward the packet to the next node. The current node knows which L2/L3 node is next in the path based on the conventional segment/label next in the ordered lists. However, the segment indicating the next device does not indicate which layer L0 or layer L1 fiber or port, for example, to use in reaching the next device. The current node is preprogrammed with internal cross connects that automatically connect the packet to the correct Layer L0 output port and the right optical fiber that connects to the next L2/L3 device or the next L0/L1 device that will lead to the next L2/L3 device indicated by the segment at the top of the ordered list. As each node forwards the packet, the segment/label used in determining where to forward the packet is removed from the list of segments/labels. While SR is a useful method of routing packets through a packet optical network, there are some drawbacks. One drawback is that the segments/labels are addresses of the L2/L3 nodes in the network. When there are multiple potential L0/L1 devices and paths between two L2/L3 devices, conventional segments do not allow the source node to choose which of the potential paths to use when going from one L2/L3 device to another L2/L3 device. These potential paths are statically programmed into the cross connects of the L2/L3 device connected to either end of these potential paths. Thus, these paths are not dynamically flexible—the source node cannot dynamically choose which of the L0/L1 paths to uses when creating the list of segments.
Accordingly, there is a need for systems, apparatus, and methods that improve upon conventional approaches including the improved methods, system and apparatus that allow a source node to dynamically choose a L0/L1 path or device as part of the segment list for a packet.