Esempio n. 1
0
    def impl(self):
        from_net = net.FromNet()
        to_net = net.ToNet()

        from_net.nothing >> library.Drop()

        from_net >> Reply() >> to_net
Esempio n. 2
0
    def impl(self):
        from_net = net.FromNet()
        free = net.FromNetFree()

        from_net.nothing >> library.Drop()

        from_net >> Reply() >> free
Esempio n. 3
0
            def impl(self):
                from_net = net.FromNet('from_net', configure=[32])
                from_net_free = net.FromNetFree('from_net_free')
                to_net = net.ToNet('to_net', configure=['from_net', 32])
                classifier = main.Classifer()
                check_packet = main.CheckPacket()
                hton1 = net.HTON(configure=['iokvs_message'])
                hton2 = net.HTON(configure=['iokvs_message'])

                prepare_header = main.PrepareHeader()
                display = main.PrintMsg()
                drop = main.Drop()
                save_id = main.SaveID()

                self.core_id >> save_id

                # from_net
                from_net >> hton1 >> check_packet >> main.SaveState() \
                >> main.GetKey() >> main.JenkinsHash() >> classifier
                from_net.nothing >> drop

                # get
                hash_get = main.HashGet()
                get_response = main.PrepareGetResp()
                classifier.out_get >> hash_get >> main.SizeGetResp(
                ) >> main.SizePktBuff() >> get_response >> prepare_header
                get_response >> main.Unref() >> main.Drop()

                # get (null)
                hash_get.null >> main.SizeGetNullResp() >> main.SizePktBuff(
                ) >> main.PrepareGetNullResp() >> prepare_header

                # set
                get_item = main.GetItemSpec()
                set_response = main.PrepareSetResp(
                    configure=['PROTOCOL_BINARY_RESPONSE_SUCCESS'])
                classifier.out_set >> get_item >> main.HashPut() >> main.Unref() >> main.SizeSetResp() \
                >> main.SizePktBuff() >> set_response >> prepare_header

                # set (unseccessful)
                set_reponse_fail = main.PrepareSetResp(
                    configure=['PROTOCOL_BINARY_RESPONSE_ENOMEM'])
                get_item.nothing >> main.SizeSetResp() >> main.SizePktBuff(
                ) >> set_reponse_fail >> prepare_header

                # exception
                arp = main.HandleArp()
                check_packet.slowpath >> arp >> to_net
                arp.drop >> from_net_free
                check_packet.drop >> from_net_free

                # send
                prepare_header >> display >> hton2 >> to_net

                # clean log
                clean_log = main.CleanLog()

                run_order(save_id, from_net)
                run_order([to_net, from_net_free, drop], clean_log)
Esempio n. 4
0
            def impl(self):
                from_net = net.FromNet('from_net')
                from_net_free = net.FromNetFree('from_net_free')
                to_net = net.ToNet('to_net', configure=['from_net'])

                #from_net = main.FromNet()
                #from_net_free = main.FromNetFree()
                #to_net = main.ToNet()

                classifier = main.Classifer()
                check_packet = main.CheckPacket()
                hton1 = net.HTON(configure=['iokvs_message'])
                hton2 = net.HTON(configure=['iokvs_message'])

                # from_net
                from_net.nothing >> main.Drop()
                from_net.out >> hton1 >> check_packet
                check_packet.out >> main.SaveState() >> main.GetKey(
                ) >> main.JenkinsHash() >> main.GetCore() >> classifier

                # get
                classifier.out_get >> rx_enq.inp[0]

                # set
                get_item = main.GetItem()
                classifier.out_set >> get_item >> rx_enq.inp[1]
                # set (unseccessful)
                set_reponse_fail = main.PrepareSetResp(
                    configure=['PROTOCOL_BINARY_RESPONSE_ENOMEM'])
                get_item.nothing >> main.SizePktBuffSetResp() >> set_reponse_fail >> main.PrepareHeader() \
                >> main.PrintMsg() >> hton2 >> to_net

                # full
                filter_full = main.FilterFull()
                get_item.out >> filter_full
                get_item.nothing >> filter_full
                filter_full >> log_in_enq.inp[0]

                # exception
                arp = main.HandleArp()
                check_packet.slowpath >> arp >> to_net

                # free from_net
                arp.drop >> from_net_free
                check_packet.drop >> from_net_free
                rx_enq.done >> main.GetPktBuff() >> from_net_free
Esempio n. 5
0
    def impl(self):
        from_net = net.FromNet(configure=[64])
        from_net_free = net.FromNetFree()

        class nic_rx(Segment):
            def impl_basic(self):
                # Notice that it's okay to connect non-empty port to an empty port.
                rx_enq = rx_enq_creator()
                from_net >> Save() >> Pkt2Tuple() >> GetCore(
                ) >> rx_enq >> GetRxBuf() >> from_net_free
                from_net.nothing >> Drop()

            def impl(self):
                network_alloc = net.NetAlloc()
                to_net = net.ToNet(configure=["alloc", 32])
                classifier = Classifier()
                rx_enq = rx_enq_creator()
                tx_buf = GetTxBuf(
                    configure=['sizeof(struct pkt_dccp_ack_headers)'])
                size_ack = SizePkt(
                    configure=['sizeof(struct pkt_dccp_ack_headers)'])
                rx_buf = GetRxBuf()

                from_net.nothing >> Drop()
                from_net >> classifier

                # CASE 1: not ack
                # send ack
                classifier.pkt >> size_ack >> network_alloc >> GetBothPkts(
                ) >> DccpSendAck() >> tx_buf >> to_net
                # process
                pkt2tuple = Pkt2Tuple()
                classifier.pkt >> pkt2tuple >> GetCore() >> rx_enq >> rx_buf

                # CASE 2: ack
                classifier.ack >> DccpRecvAck() >> rx_buf

                # Exception
                classifier.drop >> rx_buf
                network_alloc.oom >> Drop()
                rx_buf >> from_net_free

        nic_rx('nic_rx', process='dpdk', cores=range(n_nic_rx))