Estimating available bandwidth in RTMFP?

We are developing a one-on-one P2P video chat application in AS3. For it to be useful in practice, it needs to be able to automaticaly choose the best video parameters based on the clients' bandwidth capacity. After all, it makes no sense to switch to a HD mode if the clients are on a slow connection link, or have a 160x120 picture quality when the bandwidth allows for much more.
So the question is, how do we estimate the bandwidth available to clients? It seems that none of the NetStreamInfo class's metrics contain this information. Not even maxBytesPerSecond, because when the receiving end's buffer is 0 (to minimize latency), maxBytesPerSecond more or less follows videoBytesPerSecond.
Should we take a closer look at indirect hints such as SRTT perhaps?

Thank you for the suggestion. My ActionScript coder said that he used a similar technique for RTMP chats, but on slow connections the probing itself could take quite long (up to 20 seconds). Besides, I'm afraid that this approach doesn't look practical for monitoring the available bandwidth during the chat.

Similar Messages

  • Why iCloud occupies the entire available bandwidth?

    When I enable Streaming photo on my Macbook, icloud occupies the entire available bandwidth, blocking internet services on all device.
    Is there a way to limit the bandwith for streaming photo service?
    Thanks,
    Andrea.

    No, there's no way.  But I've never heard of someone with this "bandwidth" issue.  What kind of internet service do you use?

  • Locationd using all available bandwidth

    I know that locationd is used to provide OS X's "Core Location", and uses skyhook, the same service that is used by the iPod Touch to locate itself.
    That doesn't explain why locationd is consuming all available (incoming) bandwidth, however. Has anybody else run into this issue? Does anybody know why locationd would do this!?!

    Did you try using the Min Load % field for Resource in the resource master ?

  • Disable "Estimated network bandwidth on one of the connections" check

    I have several Windows clients that hang at applying computer settings when starting up. All computers that show this behavior have 2 network adapters. One is the physical adapter another is a virtual adapter created by 3rd party software. Virtual Network
    adapter always stays enabled (even if you disable it, it comes right back to the enabled state) and has an APIPA address assigned to it. The OS sees the adapter in connected state and attempts to estimate the network bandwidth on that connection,
    but since no traffic is being passed through on this link it's  forced to wait for the time out, which causes the delay. So the question is, how do you exclude a specific network adapter from being checked for bandwidth at the OS start
    up?
    Thanks

    Hi,
    >>One is the physical adapter another is a virtual adapter created by 3rd party software. Virtual Network adapter always stays enabled (even if you disable it, it comes right back to the enabled state
    Based on the description, it's recommended that we contact the vendor support of the software to see if they can help disable the virtual adapter or provide some suggestions regarding the situation.
    Best regards,
    Frank Shen
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact [email protected]

  • Can IP SLA determine maximum available bandwidth?

    I've searched for this information but all I come up with are articles describing how IP SLA can be used for determining any jitter and latency. By using a network monitoring tool is it possible to determine what the maximum bandwidth of a link is? If so, what data does the tool utilize to determine the link's bandwidth?
    I have a gigabit Metro Ethernet link and according to the diagrams from the ISP, it looks like we're only using 100Mbit of it. The routers on each end are 3925E with the HSEC license. I appreciate any help in determining the speed of my link.

    I've searched for this information but all I come up with are articles describing how IP SLA can be used for determining any jitter and latency. By using a network monitoring tool is it possible to determine what the maximum bandwidth of a link is? If so, what data does the tool utilize to determine the link's bandwidth?
    I have a gigabit Metro Ethernet link and according to the diagrams from the ISP, it looks like we're only using 100Mbit of it. The routers on each end are 3925E with the HSEC license. I appreciate any help in determining the speed of my link.

  • Available bandwindth and 'max-reserved bandwidth'

    Is the max-reserved bandwidth only important when working with Qos classes and the bandwidth statement? Is the default 75% available bandwidth only used then?
    In other words if I have a 100MB link with a service policy applied for Voice, Call-Control and video. After that I notice the available bandwidth on thie 100MB link is 61280 kilobits/sec.
    If I put in a 'max-reserved bandwidth 95' would I reclaim another 20MB of bandwidth for the class-default? Would leaving 5% on the 100MB link for routing and other stuff be acceptable?
    Here is the config and show commands:
    class-map match-any Call-Control
    match ip dscp cs3
    match ip dscp af31
    class-map match-any Video
    match ip dscp af41
    class-map match-any Voice
    match ip dscp ef
    policy-map QOS_classes_to_ACN
    class Voice
    priority 10000
    class Call-Control
    bandwidth 500
    class Video
    bandwidth 3220
    class class-default
    fair-queue
    random-detect
    interface FastEthernet6/0
    description 100MB Link to ACN
    ip address xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
    ip route-cache flow
    no ip mroute-cache
    load-interval 30
    duplex full
    speed 100
    service-policy output QOS_classes_to_ACN
    ROC-RT7206-QMOE#sh int f6/0
    FastEthernet6/0 is up, line protocol is up
    Hardware is i82543 (Livengood), address is 00b0.4a28.3ca8 (bia 00b0.4a28.3ca8)
    Description: 100MB Link to ACN
    Internet address is xxx.xxx.xxx.xxx/xx
    MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
    reliability 255/255, txload 183/255, rxload 21/255
    Encapsulation ARPA, loopback not set
    Keepalive set (10 sec)
    Full-duplex, 100Mb/s, 100BaseTX/FX
    ARP type: ARPA, ARP Timeout 04:00:00
    Last input 00:00:03, output 00:00:00, output hang never
    Last clearing of "show interface" counters 01:13:30
    Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 5211742
    Queueing strategy: Class-based queueing
    Output queue: 70/1000/64/5211742 (size/max total/threshold/drops)
    Conversations 2/35/256 (active/max active/max total)
    Reserved Conversations 2/2 (allocated/max allocated)
    Available Bandwidth 61280 kilobits/sec <--- Available bandwidth
    30 second input rate 8615000 bits/sec, 6860 packets/sec
    30 second output rate 71788000 bits/sec, 7484 packets/sec
    31692173 packets input, 4263195179 bytes
    Received 1204 broadcasts, 0 runts, 0 giants, 0 throttles
    0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
    0 watchdog
    0 input packets with dribble condition detected
    34536300 packets output, 2513155446 bytes, 0 underruns
    0 output errors, 0 collisions, 0 interface resets
    0 babbles, 0 late collision, 0 deferred
    0 lost carrier, 0 no carrier
    0 output buffer failures, 0 output buffers swapped out

    Here is the output of show policy-pam int:
    ROC-RT7206-QMOE#sh policy-map int f6/0
    FastEthernet6/0
    Service-policy output: QOS_classes_to_ACN
    Class-map: Voice (match-any)
    3417571 packets, 934178998 bytes
    30 second offered rate 1722000 bps, drop rate 0 bps
    Match: ip dscp ef (46)
    3417571 packets, 934178998 bytes
    30 second rate 1722000 bps
    Queueing
    Strict Priority
    Output Queue: Conversation 264
    Bandwidth 10000 (kbps) Burst 250000 (Bytes)
    (pkts matched/bytes matched) 1908656/521903140
    (total drops/bytes drops) 0/0
    Class-map: Call-Control (match-any)
    615085 packets, 48926098 bytes
    30 second offered rate 84000 bps, drop rate 0 bps
    Match: ip dscp cs3 (24)
    588857 packets, 47299978 bytes
    30 second rate 81000 bps
    Match: ip dscp af31 (26)
    26228 packets, 1626120 bytes
    30 second rate 2000 bps
    Queueing
    Output Queue: Conversation 265
    Bandwidth 500 (kbps) Max Threshold 64 (packets)
    (pkts matched/bytes matched) 337953/26882724
    (depth/total drops/no-buffer drops) 0/0/0
    Class-map: Video (match-any)
    146136 packets, 82165408 bytes
    30 second offered rate 90000 bps, drop rate 0 bps
    Match: ip dscp af41 (34)
    146136 packets, 82165408 bytes
    30 second rate 90000 bps
    Queueing
    Output Queue: Conversation 266
    Bandwidth 3220 (kbps) Max Threshold 64 (packets)
    (pkts matched/bytes matched) 81687/45950190
    (depth/total drops/no-buffer drops) 0/0/0
    Class-map: class-default (match-any)
    35227089 packets, 47492000208 bytes
    30 second offered rate 87718000 bps, drop rate 14714000 bps
    Match: any
    Queueing
    Flow Based Fair Queueing
    Maximum Number of Hashed Queues 256
    (total queued/total drops/no-buffer drops) 0/5171786/0
    exponential weight: 9
    class Transmitted Random drop Tail drop Minimum Maximum Mark
    pkts/bytes pkts/bytes pkts/bytes thresh thresh prob
    0 30181523/39910255774 1297726/1944176143 3893194/5836883998 20 40 1/10
    1 0/0 0/0 0/0 22 40 1/10
    2 0/0 0/0 0/0 24 40 1/10
    3 0/0 0/0 0/0 26 40 1/10
    4 0/0 0/0 0/0 28 40 1/10
    5 0/0 0/0 0/0 30 40 1/10
    6 1213/88749 0/0 0/0 32 40 1/10
    7 0/0 0/0 0/0 34 40 1/10
    rsvp 0/0 0/0 0/0 36 40 1/10

  • Bandwidth available when classifying

    I'm having trouble with my queuing config and was hoping that someone could take a look please? I have created the following:
    class-map match-any critical
    match protocol rtp
    class-map match-any priority
    match access-group 180
    policy-map queue
    class critical
    priority percent 35
    class priority
    bandwidth percent 40
    class class-default
    fair-queue
    random-detect dscp-based
    And then:
    int s0/0/0:0
    service-policy output queue
    Then when I do a show int, the available bandwidth goes to 1kpbs (formerly 1536kbps)
    Output queue: 0/1000/64/916 (size/max total/threshold/drops)
    Conversations 0/2/256 (active/max active/max total)
    Reserved Conversations 2/2 (allocated/max allocated)
    Available Bandwidth 1 kilobits/sec
    This is a 2mbps serial interface on a 2800 running Version 12.3(8r)T7.
    So, why would the available bandwidth become 1kpbs? Is available bandwidth referring to the bandwidth that's left for the class-default? Or the bandwidth availble to the critical & priority class?
    I should also mention that it wouldn't allow me to increase the priority bandwidth to above 35%. Also, bandwidth is configured as 2048 on the interface.
    Any help gratefully recieved!
    Thanks,
    J

    Hi Spremkumar,
    Thanks for your response. Here is the output. I have changed the values though to:
    class critical 20%
    class prioirty 30%
    It doesn't look like it's working though:
    show policy-map interface s0/0/0:0
    Serial0/0/0:0
    Service-policy output: queue
    Class-map: critical (match-any)
    0 packets, 0 bytes
    5 minute offered rate 0 bps, drop rate 0 bps
    Match: protocol rtp
    0 packets, 0 bytes
    5 minute rate 0 bps
    Queueing
    Strict Priority
    Output Queue: Conversation 264
    Bandwidth 20 (%)
    Bandwidth 409 (kbps) Burst 10225 (Bytes)
    (pkts matched/bytes matched) 0/0
    (total drops/bytes drops) 0/0
    Class-map: priority (match-any)
    0 packets, 0 bytes
    5 minute offered rate 0 bps, drop rate 0 bps
    Match: access-group 180
    0 packets, 0 bytes
    5 minute rate 0 bps
    Queueing
    Output Queue: Conversation 265
    Bandwidth 30 (%)
    Bandwidth 614 (kbps) Max Threshold 64 (packets)
    (pkts matched/bytes matched) 0/0
    (depth/total drops/no-buffer drops) 0/0/0
    Class-map: class-default (match-any)
    72727 packets, 38704060 bytes
    5 minute offered rate 769000 bps, drop rate 0 bps
    Match: any
    Queueing
    Flow Based Fair Queueing
    Maximum Number of Hashed Queues 256
    (total queued/total drops/no-buffer drops) 3/100/0
    exponential weight: 9
    dscp Transmitted Random drop Tail drop Minimum Maximum Mark
    pkts/bytes pkts/bytes pkts/bytes thresh thresh prob
    af11 0/0 0/0 0/0 32 40 1/10
    af12 0/0 0/0 0/0 28 40 1/10
    af13 0/0 0/0 0/0 24 40 1/10
    af21 0/0 0/0 0/0 32 40 1/10
    af22 0/0 0/0 0/0 28 40 1/10
    af23 0/0 0/0 0/0 24 40 1/10
    af31 0/0 0/0 0/0 32 40 1/10
    af32 0/0 0/0 0/0 28 40 1/10
    af33 0/0 0/0 0/0 24 40 1/10
    af41 0/0 0/0 0/0 32 40 1/10
    af42 0/0 0/0 0/0 28 40 1/10
    af43 0/0 0/0 0/0 24 40 1/10
    cs1 26/3166 0/0 0/0 22 40 1/10
    cs2 0/0 0/0 0/0 24 40 1/10
    cs3 0/0 0/0 0/0 26 40 1/10
    cs4 0/0 0/0 0/0 28 40 1/10
    cs5 0/0 0/0 0/0 30 40 1/10
    cs6 41/3928 0/0 0/0 32 40 1/10
    cs7 0/0 0/0 0/0 34 40 1/10
    ef 0/0 0/0 0/0 36 40 1/10
    rsvp 0/0 0/0 0/0 36 40 1/10
    default 72888/38781710 100/73423 0/0 20 40 1/10

  • Bandwidth percent - ios xr

    hi everyone,
    in a policy map - when you configure your classes - ex
    class 1
    bandwidth percent 25
    class 2
    bandwidth percent 25
    class 3
    bandwidth percent 25
    class 4
    bandwidth percent 25
    - will this negate p2mdrr or mddr? ie. have I configured the policy to "not" have any remaining available bandwidth to any other classes?
    thanks,
    Andrew

    hi andrew,
    bw percent gives you a defined assigned CIR based on the parent shaping bandwidth.
    bandwidth remaining (percent) will get a modified deficted  rate of the left over bandwidth after all the classes have been served that have an assigned CIR.
    you can see how the programming of the shaped classes has been done with the command show qos int <interface> <direction> which gives you the CIR that is currently running on that class and their (excess) weight ratio as determined by the scheduler, available bw and all that.
    cheers
    xander

  • Bandwidth point on Cisco 7206VXR (NPE-G2)

    After greeting...
    PCI bus mb1 (Slots 1, 3 and 5) has a capacity of 600 bandwidth points.
    Current configuration on bus mb1 has a total of 0 bandwidth points. 
    This configuration is within the PCI bus capacity and is supported. 
    PCI bus mb2 (Slots 2, 4 and 6) has a capacity of 600 bandwidth points.
    Current configuration on bus mb2 has a total of 800 bandwidth points.
    is there any effect on router when bandwidth points exceeded it's point like i marked above???if there is please point it to me...

    Hello Sami,
    Trust you are doing great.
    When installing cards into a 7200, there are clear guidelines as to the order in which slots should be used, in order to maximize the available backplane bandwidth. The bandwidth is divided between two pci buses that are used to connect left and right hand cards. The available bandwidth is split between the left and right slots on the chassis. Cisco uses a system of bandwidth points, whereby the different types of interface cards have a bandwidth points value. For instance a PA-A3-OC3 card has a value of 300 points. On a 7206VXR router, the total bandwidth points for the either the left or right-hand side slots must not total more than 600 points. The bandwidth points should be evenly distributed between the left and right slots
    Now from the logs which you have shared, it seems that you have installed Port Adapters on left half whose Bandwidth point sum is exceeding the 600 Bandwidth Point limit for the left side.
    Effect of this:  The effect would be that the Port Adapters you have used in Left side may be working in "Half Bandwidth Point".
    This would allow to use only one interface out of two in the Port Adapters.
    When there is any oversubscription, below message is also displayed in "show version"
    The set of PA-2FE, PA-POS-2OC3, and I/O-2FE qualify for "half
    bandwidth points" consideration, when full bandwidth point counting
    results in oversubscription, under the condition that only one of the
    two ports is used. With this adjustment, current configuration on bus
    mb1 has a total of 600 bandwidth points
     Please let me know if there is any concerns about these.
    Regards,
    Mohit
    **Please rate if you find this helpfull

  • How to know current bandwidth to be able to increase or decrease reserved streaming units ?

    Hi,
    how to know egress bandwidth by Azure Api to be able to increase reserved streaming unit if bandwidth reaches over 80%. Currently it is set to 1, but should be able to increase it when bandwidth is more than 160 mpbs(80% of available bandwidth which is 200mbps) 
    Thanks for your feedback in advance.

    Hi Sandhya,
    For now you can use Azure portal dashboard to check "Streaming Data Out". The chart will give you 30 minute aggregated values.
    Thanks,
    Cenk
    

  • Is it possible to allocate a fixed bandwidth say 500 Mbps for a given virtual machine in Hyper-V ?

    Is
    there any other setting in addition to Quality of Service that would reserve some of the bandwidth? I am having difficulty in utilizing hundred percent bandwidth for a VM. The
    VM does not receive more than 150 Mbps when 1 Gbps traffic is sent to it. 

    Also, this depends on the protocol.  And also the OS in the VM.  So, just because you have the potential does not necessarily mean you have the ability.
    Windows (barring a few applications such as backup agents) almost never uses 100% of its pipe.  Due to the protocols themselves.
    Linux can frequently be set to consume all of the available bandwidth.
    Now, how are you measuring that you are sending traffic at a rate that is actually higher than the receive rate?  Since the smaller pipe (greater constriction) always determines the rate of throughput regardless of the end it is on.
    Brian Ehlert
    http://ITProctology.blogspot.com
    Learn. Apply. Repeat.

  • Does *new* Time Capsule let you limit bandwidth on guest connection?

    I'm curious to know if the new dual-band Time Capsule/AEBS will let you limit bandwidth on the guest connection, or if it will suck up all the available bandwidth without restrictions?

    I would say No to this. Apple wouldn't care much about bandwidth issue but I must admit that could be nice option to play with. But you never know.

  • Involuntary bandwidth downgrades

    I've had Verizon DSL for 10 years. A few years ago I got a new modem that allowed for 3 mbps and I got that speed pretty consistently for several years.  Last June I upgraded to the 4-7 mbps plan but never got over 4, and figured I'd call about it eventually but it didn't seem that bad so let it go for a while.  However, in the last few weeks the speed started to drop noticeably and when I did a speed test it was topping out at 1 mbps.  
    I called Verizon about it Tuesday evening, went through an hour worth of diagnostics, and was told they'd send me a new modem and a technician would come check it.  On Thursday I got the modem and connected it but it didn't significantly help the speed, although in the "gateway" control panel it said I had a connection speed over 4000 kbps.  
    The technician came out Friday (earlier today) and was able to get it working back to the near 4 mbps speed (I took a screen grab of a speed test at 3.85) but he recommended I switch down to the 1.5 to 3 plan because of the distance from the office being too far to get 4-7 mbps.  He wrote a note saying that I had enough signal quality to get 3 mbps at my building.
    So I call Verizon again to switch the plan, and they say OK at first about switching to 1.5 to 3, and do something to the line and then let me go, but when I turn my modem off and on again it slows back down to 1 mbps all over again, and actually seems slower than ever.  I then call back to Verizon to try to undo whatever they did and they tell me "no it turns out that all that your line can do is 1 mbps" and now my service is capped at 1 mbps with no ability to go faster.  They changed my plan to the 1 mbps, won't let me change back to either of my old plans and say 1mbps is my only option... (I spent about three hours on the phone complaining)
    So tonight I get home from dinner and am trying to surf the web, and it's even slower.  I guess that 1mbps is the "high end" of what they're allowing me now.  I ran another speed test and got a measly 0.57 mbps.
    It's like going back from the old DSL to dial up and very frustrating.  In the course of a few days I've pretty much lost 2/3 to 5/6 of my previously available bandwidth, and it's really not acceptable.  The only other option in my neighborhood is time warner road runner, but I don't watch much TV so haven't been too psyched about it.  I don't know what to do...  I hope Verizon expands their fios network or something...  In the meanwhile I guess I'll be cancelling next week and trying the cable internet.
    Best,
    John

    Would you be able to post your Transceiver Statistics? If you tell us what modem and firmware you're running (Blue or Red/Black colored firmware) we can help you get them.
    ========
    The first to bring me 1Gbps Fiber for $30/m wins!

  • Bandwidth over utillised

    Hi there , I am still new in networking .
    I am facing a bandwidth over utilised problem to a remote site . When I ping the eo interfaces at some time , they will be a lot of time out and , I tried pinging a server , it gave the same result .
    I have checked with my service provider . But they say , my line is over utilised . The serial interface is almost 90 % utilised .
    The question is how do I know , or how to check from my router that the Serial interface is fully utilised or the internal traffic is high . Should I check the Ethernet interface also ?
    Any commands to check ....
    Please help .

    Thanks for your prompt reply . I am afraid I can't make any changes in the router , because the router belong to our ISP . I have only read access .
    I did not get you , what is the input/output rate ..
    Below is the output from my serial interface
    Serial0 is up, line protocol is up
    Hardware is PowerQUICC Serial
    Description: Cisco
    Internet address is 1.1.1.1
    MTU 1500 bytes, BW 128 Kbit, DLY 20000 usec,
    reliability 255/255, txload 41/255, rxload 93/255
    Encapsulation HDLC, loopback not set
    Keepalive set (10 sec)
    Last input 00:00:00, output 00:00:00, output hang never
    Last clearing of "show interface" counters 8w6d
    Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 13106
    Queueing strategy: weighted fair
    Output queue: 0/1000/64/13106 (size/max total/threshold/drops)
    Conversations 0/17/32 (active/max active/max total)
    Reserved Conversations 1/1 (allocated/max allocated)
    Available Bandwidth 88 kilobits/sec
    5 minute input rate 47000 bits/sec, 28 packets/sec
    5 minute output rate 21000 bits/sec, 43 packets/sec
    41504534 packets input, 2178405105 bytes, 0 no buffer
    Received 545100 broadcasts, 0 runts, 0 giants, 0 throttles
    0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
    54043477 packets output, 483672500 bytes, 0 underruns
    0 output errors, 0 collisions, 1 interface resets
    0 output buffer failures, 0 output buffers swapped out
    0 carrier transitions
    DCD=up DSR=up DTR=up RTS=up CTS=up
    Clerify with me , sorry , i am still new ...

  • Assigning Bandwidth to specific application

    Hi all
    Im sure there's technical terms for all this but basically I'm looking for a way to assign my ADSL bandwidth to individual applications...for example, if ITunes is downloading something, my safari browsing is very slow (I only have a 1MB ADSL line). So, can I get ITunes to only use, say, 50% of the available bandwidth so that the rest is more available? This is only one example and basically I'm wondering if there is a general way (or application) to tell OSX how much bandwidth it can use for whichever applications I have running.
    Many thanks

    Hi mhook,
    have a look at this article http://www.macgeekery.com/hacks/software/trafficshaping_in_mac_osx (is for OSX Tiger but should work for Leopard as well).
    But you might end using/buying an app like this http://www.intrarts.com/throttled.html
    Hope it helps
    Stefan

Maybe you are looking for

  • [Solved]update-desktop-database doesn't work

    The output is: Warning in file "/usr/share/applications/epiphany.desktop": usage of MIME type "multipart/related" is discouraged ("multipart" is a media type that probably does not make sense in this context) The databases in [/usr/local/share/applic

  • Do I need a new battery?

    My MacBook is from 2007 and works great w.o being connected to the power source.  All of a sudden it will not turn on without being plugged in and it says 'replace battery now'.  Any better ideas than buying a new battery?  Do I really need a new bat

  • I want store JMS queue in oracle database..

    Hi all, I want store JMS queue in oracle database.. How can i configure my jboss 3.0.1 Thanks, Thilsen

  • Geographic Information System (GIS) functions in SAP CRM 2007

    Dear all, I am currently working on a SAP CRM 2007 implementation project that consists in replacing an old customer service application. Currently this application is managing service technicians' territories with embedded GIS functions (it relies o

  • Doubt in WLS 7.0 JMS Cluster Failover

    I configured 2 JMS servers JMS1 and JMS2. I also configured 2 JMS file stores FS1 and FS2. JMS server JMS1 using FS1 and JMS2 using FS2. I also configured 1 distributed queue DQ for the cluster server. I also configured 1 local queue LQ1 in JMS1 and