VoIP & AutoQoS & frame/atm
I have 2 remote locations connected via frame/atm links currently with no QoS configs and potentially running VoIP. Is AutoQoS the simpliest and/or best solution, for voip communication across the WAN(frame/atm) if no other QoS is required ?
Thanks for your consideration -
I'll admit that I haven't used AutoQoS on a WAN link, and definitely not on a FR/ATM interface.
I normally associate appropriate use of the AutoQoS command with L2 switchports, since the queueing on the switches is much more complex.
For routers, it's very simple, and there is a wider variance in how people use it.
In a very bare-bones scenario, you can get away with this:
class-map match-all voice
match protocol rtp audio
policy-map LLQ
class voice
priority percent 50
class class-default
fair-queue
int s0/0
service-policy out LLQ
You could make it more well rounded by matching on your VoIP signaling and other high priority traffic, but that's specific to your needs.
-nick
Similar Messages
-
No modem conection with voip over frame-relay
I'm trying to connect two modems through voip over frame-relay network using the modem passthrough command but that is no working. The voice calls is operating very well but the modems no connect between them. I'm using G-729 codec with ip header compression and data fragment in 80 bytes.
There are some know issues with cisco dsps and V.90+ modems, but we have been able to get most modems to work correctly accross our network. If you are using g729 for all other voice calls you will want to use the modem passthrough command to have both gw's turn to modem passthrough. I typically set up each dial peer with the specific commands, since I have found the global commands are not consistently applied. Here is a sample dial peer config....
dial-peer voice 3 voip
description Default voip peer
preference 1
incoming called-number .T
destination-pattern .T
progress_ind setup enable 3
progress_ind connect enable 8
modem passthrough nse codec g711ulaw
voice-class codec 1
session protocol sipv2
session target sip-server
dtmf-relay rtp-nte
fax rate disable
fax protocol pass-through g711ulaw
ip qos dscp cs3 signaling
no vad
Some of these commands are specific to the isdn signaling set up we have at this site. Also, we are using sip hence the sip session target. But the modem and fax passthrough commands are pretty much universal.
Also, some of those commands are not supported until 12.2.13. You might want to think about an ios upgrade. -
In order to provide voice quality for VoIP, is FR fragmentation equivalent to lowering the MTU size for the serial subinterface of a Frame relay subinterface?
Is there any isues like stop communications, using Low MTU ?If the router belongs to any of the
platform listed below, then use
FRF12 for you fragmentation. The MTU size
lowering also works but this can cause a high over
head as it can't be specified on a per dlci level.
With multiple dlci i.e. subinterfaces use per dlci fragmentation.. this helps reduce the overhead of changing the MTU size of the physical interface.
Snip config example.( __Must be configured on both side of the termination___)
PHONE 3333312---ROUTERA ----DLCI 100----ROUTERB ---PHONE 2111123
ROUTER A
dial-peer voice 1 voip
destination-pettern 2T
session target ipv4:10.10.10.2
int ser 0/0
encap frame-relay
frame-relay traffic-shaping
no ip address
interface serial0/0.1 point-to-point
ip add 10.10.10.1 255.255.255.252
frame-relay interface-dlci 100
class voice
map-class frame-relay voice
frame cir 64000
frame bc 640
frame mincir 64000
frame-relay ip rtp priority 16384 16383 48
frame fragment 80
frame fair-queue 64 256 0
ROUTER B
dial-peer voice 3 voip
destination-pettern 3T
session target ipv4:10.10.10.1
int ser 0/0
encap frame-relay
frame-relay traffic-shaping
no ip address
interface serial0/0.1 point-to-point
ip add 10.10.10.2 255.255.255.252
frame-relay interface-dlci 100
class voice
map-class frame-relay voice
frame cir 64000
frame bc 640
frame mincir 64000
frame-relay ip rtp priority 16384 16383 48
frame fragment 80
frame fair-queue 64 256 0
This should help if your router is
c2600, c3600, mc3810, c7200, c1750
all running the right level of IOS.
12.1(5)T and above should work well. -
Problem Advance QOS VOIP on ATM
hi,
I have a big problem for VOIP QOS on ATM interface.
Unable to have a proper voice on an ATM interface, no drop packets ...
I give you a link is to download a PDF that explains everything with schemas. Thank you in advance.Pdf explains problem
-
Hi All;
Recently I bought cisco callmanager express with 2801 router. I am wandering what is the best tools or softwares for traffic engineering in order to implement high quality VoIP over the WAN. Actually Ciscowork is very expensive, I looking for something cheaper and simpler.
Thanks
AlexThere are many tools built in to IOS to help you with QoS (Quality of Service). By far the easiest way to configure QoS is by using the AutoQoS feature which was released beginning with IOS version 12.2(15)T. AutoQoS configures features such as Classification, LLQ, cRTP, and LFI based on your network infrastructure without requiring you to know every detail of these QoS mechanisms. Please find links below, including a link to an explanation of AutoQoS as well as a link to an excellent Cisco Press book on the subject.
Quality of Service
http://www.cisco.com/en/US/tech/tk543/tsd_technology_support_category_home.html
QoS Features for Voice Introduction
http://www.cisco.com/en/US/products/sw/iosswrel/ps1831/products_configuration_guide_chapter09186a00800ca6c5.html
VoIP over Frame Relay with Quality of Service
http://www.cisco.com/en/US/tech/tk652/tk698/technologies_configuration_example09186a0080094af9.shtml
AutoQoS-VoIP
http://www.cisco.com/en/US/products/ps6350/products_configuration_guide_chapter09186a0080455a3d.html
Cisco QOS Exam Certification Guide (IP Telephony Self-Study), 2nd Edition
http://www.ciscopress.com/title/1587201240
Hope this helps. If so, please rate the post.
Brandon -
Help needed with if statement in a method
Hi I�ve created 2 string arrays. One holds a one digit user id no. and the other holds a 4 digit pin number. I�ve then written a method which should take the userId no that has been sent to the method in the UserCode parameter find the same number in the custid array if it does it should then check the same position of the pin array and check that the pin number matches the pin no. the method has received in PINCode parameter.
At the moment my method receives the parameters checks the userId no. but doesn�t move on and check the PIN array.
Any help would be great as I�ve been staring at this for days now and I can�t see the wood from the trees!
public boolean checkPinAndUserId(String pinCode, String userCode)
boolean found = false;
for (int i = 0; i < userId.length; i++)
if (userCode.equals(userId))
if (pinCode.equals(pin[i]))
found = true;
return found;I've posted my code in full so hopefully everyone can see exactly what I have been doing.
Note - my code uses the observer/observable model. The method I am having the problem with the if statement is in the class HSBC as are the string arrays. in the class ATM in the action performed PINInput button events section, when the pin count reaches 4 it sends the parameters over to the HSBC checkpin&userid method.
I've used the System.out.println() statements to see what's going on and it receives the parameters checkes the userid array but does not move on to check that the pin parameter matches the pin array?
Any help would be great - Hope this helps.
* @(#)BankAssignment.java 1.0 03/04/06
* This apllication l
package myprojects.bankassignment;
import java.awt.*; // import the component library
import java.awt.event.*; // import the evnet library
import javax.swing.*;
import java.util.*;
class Correct1v16 extends Frame // make a new application
public Correct1v16() // this is the constructor method
HSBC HSBCobj = new HSBC();
public static void main(String args[]) // this invokes the constructor of the class and creates a runable object 'mainframe'
Correct1v16 mainFrame = new Correct1v16(); // the constructor call of the class which creates an object of that class
class HSBC implements Observer, ActionListener
Frame f5;
JLabel refill, launch;
TextField tRefill, tLaunch;
JButton refillbut, launchbut;
int count;
String [] userId=new String [10];
String [] pin=new String [10];
public boolean authenticate = false;
int i;
public HSBC()
drawFrame();
Atm Atmobj = new Atm(this);
System.out.println("Starting HSBC constructor");
public void drawFrame()
System.out.println("Start HSBC drawframe method...");
f5=new Frame("HSBC");
f5.setLayout(new FlowLayout());
f5.setSize(200, 200);
f5.addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
f5.dispose();
System.exit(0);
refill=new JLabel("Refill ATM");
launch=new JLabel("Launch new ATM");
tRefill=new TextField(20);
tLaunch=new TextField(10);
refillbut=new JButton("Refill ATM");
refillbut.addActionListener(this);
launchbut=new JButton("Launch new ATM");
launchbut.addActionListener(this);
f5.add(refill);
f5.add(tRefill);
f5.add(refillbut);
f5.add(launch);
f5.add(tLaunch);
f5.add(launchbut);
f5.setVisible(true);
//*********** POPULATE THE ARRAYS */
pin[0]="1234";
pin[1]="2345";
pin[2]="3456";
pin[3]="4567";
pin[4]="5678";
pin[5]="6789";
pin[6]="7890";
pin[7]="8901";
pin[8]="9012";
pin[9]="0123";
userId[0]="0";
userId[1]="1";
userId[2]="2";
userId[3]="3";
userId[4]="4";
userId[5]="5";
userId[6]="6";
userId[7]="7";
userId[8]="8";
userId[9]="9";
}// end drawframe method
// public Atm atmLink = (Atm)o;
public void update(Observable gm1, Object o)
Atm atmLink = (Atm)o;
tRefill.setText("Refill ATM ?");
atmLink.refill();
}//end update method
public void actionPerformed(ActionEvent ae)
if(ae.getSource() == refillbut)
// Atm Atmobj.refill();
// tRefill.setText("text area");
// atmLink.refill();
// Atmobj.refill();
// setChanged();
// notifyObservers();
if(ae.getSource() == launchbut)
tLaunch.setText("new ATM opened");
Atm Atmobj1 = new Atm(this);
//******** THIS METHOD RECEIVES THE PARAMETERS FROM THE ATM METHOD (LINE 580) (PINCODE AND USERCODE) BUT
//******** IT ONLY THE ARRAY CALLED USERID (WHICH HOLDS THE USER CODE MATCHES ONE OF THE USERID'S)
//******** I DO WANT IT TO DO THIS BUT I ALSO WANT IT TO MOVE ON AND CHECK THE PINCODE WITH THE PIN ARRAY)
//******** IF THEY ARE BOTH TRUE I WANT IT TO RETURN TRUE - ELSE FALSE. */
public boolean checkPinAndUserId(String pinCode, String userCode)
boolean found = false;
System.out.println("in checkpin method");
for (int i = 0; i < userId.length; i++)
System.out.println("in the userid array" + userId);
if (userCode.equals(userId[i]))
System.out.println("checking user code array");
if (pinCode.equals(pin[i]))
System.out.println("checking the pin array" + pinCode);
System.out.println("pin[i] = "+pin[i]);
found = true;
return found;
}// end HSBC class
class Atm extends Observable implements ActionListener
Frame f1;
TextField t3, t5;
JTextArea display = new JTextArea("Welcome to HSBC Bank. \n Please enter your User Identification number \n", 5, 40);
JPanel p1, p2, p3,p4;
private JButton but1, but2, but3, but4,but5,but6,but7,but8,but9,but0,enter,
cancel,fivepounds,tenpounds,twentypounds,fiftypounds,clearbut, refillbut;
int state = 1;
public String pinCode ="";
public String userCode ="";
int userCodeCount = 0;
int PINCount = 0;
String withdrawAmount = "";
int atmBalance =200;
private HSBC HSBCobj;
//ATM constructor that receives the HSBCobj g1 reference to where the HSBC class
// in in the program
// Calls the drawATMFrame method
// add the observer to the HSBCobj reference so that the ATM can tell HSBC that
// something has changed
public Atm(HSBC g1)
HSBCobj = g1;
drawATMFrame();
System.out.println("Starting Atm constructor");
addObserver(HSBCobj);
// this is the method that draws the ATM interface
// also apply the Border Layout to the frame
public void drawATMFrame()
f1=new Frame("ATM");
f1.setLayout(new BorderLayout());
f1.setSize(350, 250);
f1.addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
f1.dispose();
System.exit(0);
// declare & instantiate all the buttons that will be used on the ATM
but1 =new JButton("1");
but1.addActionListener(this);
but2 =new JButton("2");
but2.addActionListener(this);
but3 =new JButton("3");
but3.addActionListener(this);
but4 =new JButton("4");
but4.addActionListener(this);
but5 =new JButton("5");
but5.addActionListener(this);
but6 =new JButton("6");
but6.addActionListener(this);
but7 =new JButton("7");
but7.addActionListener(this);
but8 =new JButton("8");
but8.addActionListener(this);
but9 =new JButton("9");
but9.addActionListener(this);
but0 =new JButton("0");
but0.addActionListener(this);
enter=new JButton("Enter");
enter.addActionListener(this);
cancel=new JButton("Cancel/ \n Restart");
cancel.addActionListener(this);
fivepounds =new JButton("?5");
fivepounds.addActionListener(this);
tenpounds = new JButton("?10");
tenpounds.addActionListener(this);
twentypounds = new JButton("?20");
twentypounds.addActionListener(this);
fiftypounds = new JButton("?50");
fiftypounds.addActionListener(this);
clearbut = new JButton("Clear");
clearbut.addActionListener(this);
refillbut = new JButton("Refill");
refillbut.addActionListener(this);
//declare & instantiate a textfield
t3=new TextField(5);
// instantiate 4 JPanels
p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
p4=new JPanel();
// add some buttons to p1
p1.add(but1);
p1.add(but2);
p1.add(but3);
p1.add(but4);
p1.add(but5);
p1.add(but6);
p1.add(but7);
p1.add(but8);
p1.add(but9);
p1.add(but0);
//add the text area field to p2
p2.add(display);
// apply the grid layout to p3
GridLayout layout3 = new GridLayout(4,1,5,5);
p3.setLayout(layout3);
p3.add(fivepounds);
p3.add(tenpounds);
p3.add(twentypounds);
p3.add(fiftypounds);
// apply grid layout to p4
GridLayout layout4 = new GridLayout(4,1,5, 5);
p4.setLayout(layout4);
p4.add(clearbut);
p4.add(enter);
p4.add(cancel);
p4.add(refillbut);
//add the panels to the different parts of the screen
f1.add("North", display);
f1.add("Center", p1);
f1.add("East", p4);
f1.add("West", p3);
f1.setVisible(true);
}// end drawATMframe method
public void actionPerformed(ActionEvent ae)
if(state == 1)
getUserIdNo(ae);
else if(state == 2)
doPINInput(ae);
else
withdrawCash(ae);
}// end action performed method
//******** STATE 1 events
//******** USER ID INPUT
public void getUserIdNo (ActionEvent ae)
if (ae.getSource() == but1)
display.append("*");
userCode = userCode + "1";
userCodeCount++;
if (ae.getSource() == but2)
display.append("*");
userCode = userCode + "2";
userCodeCount++;
if (ae.getSource() == but3)
display.append("*");
userCode = userCode + "3";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but4)
display.append("*");
userCode = userCode = "4";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but5)
display.append("*");
userCode = userCode + "5";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but6)
display.append("*");
userCode = userCode + "6";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but7)
display.append("*");
userCode = userCode + "7";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but8)
display.append("*");
userCode = userCode + "8";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but9)
display.append("*");
userCode = userCode + "9";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but0)
display.append("*");
userCode = userCode + "0";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == cancel)
display.setText("Welcome to HSBC Bank.\n Please enter your User Identification number \n");
userCode = "";
state = 2;
if (ae.getSource() == clearbut)
display.setText("Please enter your user ID number again\n");
userCode = "";
userCodeCount = 0;
if (ae.getSource() == refillbut)
refill();
if (ae.getSource() == enter)
display.setText("Please enter your PIN \n");
state = 2;
System.out.println(" User id enter button = " + userCode);
if (userCodeCount == 1)
display.setText("Please enter your PIN \n");
userCode = "";
userCodeCount = 0;
state = 2;
//******** STATE 2
//******** PIN INPUT
public void doPINInput(ActionEvent ae)
if (ae.getSource() == but1)
{ pinCode = pinCode.concat("1");
display.append("*");
PINCount++;
if (ae.getSource() == but2)
{ pinCode = pinCode.concat("2");
display.append("*");
PINCount++;
if (ae.getSource() == but3)
{ pinCode = pinCode.concat("3");
display.append("*");
PINCount++;
if (ae.getSource() == but4)
{ pinCode = pinCode.concat("4");
display.append("*");
PINCount++;
if (ae.getSource() == but5)
{ pinCode = pinCode.concat("5");
display.append("*");
PINCount++;
if (ae.getSource() == but6)
{ pinCode = pinCode.concat("6");
display.append("*");
PINCount++;
if (ae.getSource() == but7)
{ pinCode = pinCode.concat("7");
display.append("*");
PINCount++;
if (ae.getSource() == but8)
{ pinCode = pinCode.concat("8");
display.append("*");
PINCount++;
if (ae.getSource() == but9)
{ pinCode = pinCode.concat("9");
display.append("*");
PINCount++;
if (ae.getSource() == but0)
{ pinCode = pinCode.concat("0");
display.append("*");
PINCount++;
if (ae.getSource() == clearbut)
display.setText("Please enter your PIN number again \n");
pinCode = "";
PINCount = 0;
if (ae.getSource() == cancel)
display.setText("Welcome to HSBC Bank.\n Please enter your User Identification number \n");
state = 1;
pinCode ="";
PINCount = 0;
if (ae.getSource() == refillbut)
refill();
/// ************************ THIS BUTTON SENDS THE PIN & USER CODE OVER TO THE MAIN BANK
/// ************************ (LINE 152)
if (ae.getSource() == enter)
// if(HSBCobj.checkPinAndUserId(pinCode, userCode))
// display.setText("How much would you like to withdraw \n");
// else
// display.setText("Your UserId and Pin code do not match");
if(PINCount ==4)
if(HSBCobj.checkPinAndUserId(userCode,pinCode))
display.setText("Enter the amount you \n want to withdraw \n ?");
PINCount=0;
else
display.setText("Your User Identification Number \n and PIN number do not match! \n please try again\n");
//*********** STATE 3 events
//*********** withdrawCash
public void withdrawCash(ActionEvent ae)
// if (ae.getSource() == but1)
// display.append("1");
/// withdrawAmount = withdrawAmount+1;
// pinCode = pinCode.concat("2");
// System.out.println("Withdrawal Amount = "+withdrawAmount);
if(ae.getSource( ) == but1)
withdrawAmount = withdrawAmount + "1";
display.setText(withdrawAmount);
if(ae.getSource( ) == but2)
withdrawAmount = withdrawAmount + "2";
display.setText(withdrawAmount);
if(ae.getSource( ) == but3)
withdrawAmount = withdrawAmount + "3";
display.setText(withdrawAmount);
if(ae.getSource( ) == but4)
withdrawAmount = withdrawAmount + "4";
display.setText(withdrawAmount);
if(ae.getSource( ) == but5)
withdrawAmount = withdrawAmount + "5";
display.setText(withdrawAmount);
if(ae.getSource( ) == but6)
withdrawAmount = withdrawAmount + "6";
display.setText(withdrawAmount);
if(ae.getSource( ) == but7)
withdrawAmount = withdrawAmount + "7";
display.setText(withdrawAmount);
if(ae.getSource( ) == but8)
withdrawAmount = withdrawAmount + "8";
display.setText(withdrawAmount);
if(ae.getSource( ) == but9)
withdrawAmount = withdrawAmount + "9";
display.setText(withdrawAmount);
if(ae.getSource( ) == but0)
withdrawAmount = withdrawAmount + "0";
display.setText(withdrawAmount);
if (ae.getSource() == fivepounds)
withdrawAmount = withdrawAmount + "5";
display.setText(withdrawAmount);
atmBalance();
if (ae.getSource() == tenpounds)
withdrawAmount = withdrawAmount + "10";
display.setText(withdrawAmount);
atmBalance();
if (ae.getSource() == twentypounds)
withdrawAmount = withdrawAmount + "20";
display.setText(withdrawAmount);
atmBalance();
if (ae.getSource() == fiftypounds)
withdrawAmount = withdrawAmount + "50";
display.setText(withdrawAmount);
atmBalance();
// if (ae.getSource() == tenpounds)
// display.append("10");
// withdrawAmount = 10;
// pinCode = pinCode.concat("2");
// System.out.println("10 pound button pressed");
// atmBalance();
if (ae.getSource() == enter)
atmBalance();
if (ae.getSource() == refillbut)
System.out.println("refill but pressed");
refill();
if (ae.getSource() == clearbut)
System.out.println("clear but pressed");
display.setText("Enter the amount you want to withdraw \n ?");
withdrawAmount="";
if (ae.getSource() == cancel)
display.setText("Welcome to HSBC Bank.\n Please enter your User Identification number \n");
withdrawAmount="";
pinCode ="";
PINCount = 0;
userCode = "";
userCodeCount = 0;
state = 1;
}// end withdraw cash input method
// checks balace of atm and withdraws cash. Also notifies onserver if atm balance is low
public void atmBalance()
String s = withdrawAmount;
int n = Integer.parseInt(s);
if ( atmBalance >= n)
atmBalance = atmBalance - n;
System.out.println("atm balance = "+ atmBalance);
display.setText("Thankyou for using HSBC. \nYou have withdrawn ?"+n);
if (atmBalance<40)
System.out.println("atm balance is less than 40 - notify HSBC" );
setChanged();
notifyObservers(this);
/// note the refil should send a message to the controller
// advising a refil is needed. The Bank will send an engineer
// out who will fill the atm up
}// end atmBalance method
/// note the refil should send a message to the controller
/// then th coontroller will send a message to this method to fill machine
/// (this is simulating a clerk filling atm)
public void refill()
System.out.println("in refill method" );
atmBalance = 200;
System.out.println("Atm has been refilled. Atm balance = " + atmBalance);
// setChanged();
// notifyObservers(this);
}// end refill method
// NOTE SURE ABOUT THIS - DO I USE THE UPDATE METHOD TO NOTIFY HSBC THAT ATM REQUIRES FILLING
// THIS IS THE WRONG PART OF THE PROGRAM (SHOULD BE IN HSBC) - IGNORE
public void update(Observable gm1, Object gameObj)
display.setText("Congratulations");
}//end update method
}// end Atm method
}// end Assignment2 class -
Help with comparing string array with parameters
I've posted my code in full so hopefully everyone can see exactly what I have been doing.
Note - my code uses the observer/observable model. The method I am having the problem with the if statement is in the class HSBC.
Basically when the pin count reaches 4 (in the atm class) it sends the userid & pincode) over to the checkPinAndUserId(String pinCode, String userCode) method. Here the if statement should check the userid to see if the string parameter matches a string in the array. If it does it should check in the same position in the pin array to check the pin no is correct and then return true.
* @(#)BankAssignment.java 1.0 03/04/06
* This apllication l
package myprojects.bankassignment;
import java.awt.*; // import the component library
import java.awt.event.*; // import the evnet library
import javax.swing.*;
import java.util.*;
class Correct1v16 extends Frame // make a new application
public Correct1v16() // this is the constructor method
HSBC HSBCobj = new HSBC();
public static void main(String args[]) // this invokes the constructor of the class and creates a runable object 'mainframe'
Correct1v16 mainFrame = new Correct1v16(); // the constructor call of the class which creates an object of that class
class HSBC implements Observer, ActionListener
Frame f5;
JLabel refill, launch;
TextField tRefill, tLaunch;
JButton refillbut, launchbut;
int count;
String [] userId=new String [10];
String [] pin=new String [10];
public boolean authenticate = false;
int i;
public HSBC()
drawFrame();
Atm Atmobj = new Atm(this);
System.out.println("Starting HSBC constructor");
public void drawFrame()
System.out.println("Start HSBC drawframe method...");
f5=new Frame("HSBC");
f5.setLayout(new FlowLayout());
f5.setSize(200, 200);
f5.addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
f5.dispose();
System.exit(0);
refill=new JLabel("Refill ATM");
launch=new JLabel("Launch new ATM");
tRefill=new TextField(20);
tLaunch=new TextField(10);
refillbut=new JButton("Refill ATM");
refillbut.addActionListener(this);
launchbut=new JButton("Launch new ATM");
launchbut.addActionListener(this);
f5.add(refill);
f5.add(tRefill);
f5.add(refillbut);
f5.add(launch);
f5.add(tLaunch);
f5.add(launchbut);
f5.setVisible(true);
//*********** POPULATE THE ARRAYS */
pin[0]="1234";
pin[1]="2345";
pin[2]="3456";
pin[3]="4567";
pin[4]="5678";
pin[5]="6789";
pin[6]="7890";
pin[7]="8901";
pin[8]="9012";
pin[9]="0123";
userId[0]="0";
userId[1]="1";
userId[2]="2";
userId[3]="3";
userId[4]="4";
userId[5]="5";
userId[6]="6";
userId[7]="7";
userId[8]="8";
userId[9]="9";
}// end drawframe method
// public Atm atmLink = (Atm)o;
public void update(Observable gm1, Object o)
Atm atmLink = (Atm)o;
tRefill.setText("Refill ATM ?");
atmLink.refill();
}//end update method
public void actionPerformed(ActionEvent ae)
if(ae.getSource() == refillbut)
// Atm Atmobj.refill();
// tRefill.setText("text area");
// atmLink.refill();
// Atmobj.refill();
// setChanged();
// notifyObservers();
if(ae.getSource() == launchbut)
tLaunch.setText("new ATM opened");
Atm Atmobj1 = new Atm(this);
//******** THIS METHOD RECEIVES THE PARAMETERS FROM THE ATM METHOD (LINE 580) (PINCODE AND USERCODE) BUT
//******** IT ONLY THE ARRAY CALLED USERID (WHICH HOLDS THE USER CODE MATCHES ONE OF THE USERID'S)
//******** I DO WANT IT TO DO THIS BUT I ALSO WANT IT TO MOVE ON AND CHECK THE PINCODE WITH THE PIN ARRAY)
//******** IF THEY ARE BOTH TRUE I WANT IT TO RETURN TRUE - ELSE FALSE. */
public boolean checkPinAndUserId(String userCode, String pinCode)
boolean found = false;
System.out.println("in checkpin method");
System.out.println("userCode = "+ userCode);
System.out.println("pinCode = " + pinCode);
for (int i = 0; i < userId.length; i++)
System.out.println("in the userid array" + userId);
if (userCode.equals(userId[i]))
System.out.println("checking user code array");
if (pinCode.equals(pin[i]))
System.out.println("checking the pin array" + pinCode);
System.out.println("pin[i] = "+pin[i]);
found = true;
return found;
}// end HSBC class
class Atm extends Observable implements ActionListener
Frame f1;
TextField t3, t5;
JTextArea display = new JTextArea("Welcome to HSBC Bank. \n Please enter your User Identification number \n", 5, 40);
JPanel p1, p2, p3,p4;
private JButton but1, but2, but3, but4,but5,but6,but7,but8,but9,but0,enter,
cancel,fivepounds,tenpounds,twentypounds,fiftypounds,clearbut, refillbut;
int state = 1;
public String pinCode ="";
public String userCode ="";
int userCodeCount = 0;
int PINCount = 0;
String withdrawAmount = "";
int atmBalance =200;
private HSBC HSBCobj;
//ATM constructor that receives the HSBCobj g1 reference to where the HSBC class
// in in the program
// Calls the drawATMFrame method
// add the observer to the HSBCobj reference so that the ATM can tell HSBC that
// something has changed
public Atm(HSBC g1)
HSBCobj = g1;
drawATMFrame();
System.out.println("Starting Atm constructor");
addObserver(HSBCobj);
// this is the method that draws the ATM interface
// also apply the Border Layout to the frame
public void drawATMFrame()
f1=new Frame("ATM");
f1.setLayout(new BorderLayout());
f1.setSize(350, 250);
f1.addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
f1.dispose();
System.exit(0);
// declare & instantiate all the buttons that will be used on the ATM
but1 =new JButton("1");
but1.addActionListener(this);
but2 =new JButton("2");
but2.addActionListener(this);
but3 =new JButton("3");
but3.addActionListener(this);
but4 =new JButton("4");
but4.addActionListener(this);
but5 =new JButton("5");
but5.addActionListener(this);
but6 =new JButton("6");
but6.addActionListener(this);
but7 =new JButton("7");
but7.addActionListener(this);
but8 =new JButton("8");
but8.addActionListener(this);
but9 =new JButton("9");
but9.addActionListener(this);
but0 =new JButton("0");
but0.addActionListener(this);
enter=new JButton("Enter");
enter.addActionListener(this);
cancel=new JButton("Cancel/ \n Restart");
cancel.addActionListener(this);
fivepounds =new JButton("?5");
fivepounds.addActionListener(this);
tenpounds = new JButton("?10");
tenpounds.addActionListener(this);
twentypounds = new JButton("?20");
twentypounds.addActionListener(this);
fiftypounds = new JButton("?50");
fiftypounds.addActionListener(this);
clearbut = new JButton("Clear");
clearbut.addActionListener(this);
refillbut = new JButton("Refill");
refillbut.addActionListener(this);
//declare & instantiate a textfield
t3=new TextField(5);
// instantiate 4 JPanels
p1=new JPanel();
p2=new JPanel();
p3=new JPanel();
p4=new JPanel();
// add some buttons to p1
p1.add(but1);
p1.add(but2);
p1.add(but3);
p1.add(but4);
p1.add(but5);
p1.add(but6);
p1.add(but7);
p1.add(but8);
p1.add(but9);
p1.add(but0);
//add the text area field to p2
p2.add(display);
// apply the grid layout to p3
GridLayout layout3 = new GridLayout(4,1,5,5);
p3.setLayout(layout3);
p3.add(fivepounds);
p3.add(tenpounds);
p3.add(twentypounds);
p3.add(fiftypounds);
// apply grid layout to p4
GridLayout layout4 = new GridLayout(4,1,5, 5);
p4.setLayout(layout4);
p4.add(clearbut);
p4.add(enter);
p4.add(cancel);
p4.add(refillbut);
//add the panels to the different parts of the screen
f1.add("North", display);
f1.add("Center", p1);
f1.add("East", p4);
f1.add("West", p3);
f1.setVisible(true);
}// end drawATMframe method
public void actionPerformed(ActionEvent ae)
if(state == 1)
getUserIdNo(ae);
else if(state == 2)
doPINInput(ae);
else
withdrawCash(ae);
}// end action performed method
//******** STATE 1 events*/
//******** USER ID INPUT*/
public void getUserIdNo (ActionEvent ae)
if (ae.getSource() == but1)
display.append("*");
userCode = userCode + "1";
userCodeCount++;
if (ae.getSource() == but2)
display.append("*");
userCode = userCode + "2";
userCodeCount++;
if (ae.getSource() == but3)
display.append("*");
userCode = userCode + "3";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but4)
display.append("*");
userCode = userCode = "4";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but5)
display.append("*");
userCode = userCode + "5";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but6)
display.append("*");
userCode = userCode + "6";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but7)
display.append("*");
userCode = userCode + "7";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but8)
display.append("*");
userCode = userCode + "8";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but9)
display.append("*");
userCode = userCode + "9";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == but0)
display.append("*");
userCode = userCode + "0";
userCodeCount++;
System.out.println("user id ="+userCode);
if (ae.getSource() == cancel)
display.setText("Welcome to HSBC Bank.\n Please enter your User Identification number \n");
userCode = "";
state = 2;
if (ae.getSource() == clearbut)
display.setText("Please enter your user ID number again\n");
userCode = "";
userCodeCount = 0;
if (ae.getSource() == refillbut)
refill();
if (ae.getSource() == enter)
display.setText("Please enter your PIN \n");
state = 2;
System.out.println(" User id enter button = " + userCode);
if (userCodeCount == 1)
display.setText("Please enter your PIN \n");
//userCode = "";
userCodeCount = 0;
state = 2;
//******** STATE 2 */
//******** PIN INPUT*/
public void doPINInput(ActionEvent ae)
if (ae.getSource() == but1)
{ pinCode = pinCode.concat("1");
display.append("*");
PINCount++;
if (ae.getSource() == but2)
{ pinCode = pinCode.concat("2");
display.append("*");
PINCount++;
if (ae.getSource() == but3)
{ pinCode = pinCode.concat("3");
display.append("*");
PINCount++;
if (ae.getSource() == but4)
{ pinCode = pinCode.concat("4");
display.append("*");
PINCount++;
if (ae.getSource() == but5)
{ pinCode = pinCode.concat("5");
display.append("*");
PINCount++;
if (ae.getSource() == but6)
{ pinCode = pinCode.concat("6");
display.append("*");
PINCount++;
if (ae.getSource() == but7)
{ pinCode = pinCode.concat("7");
display.append("*");
PINCount++;
if (ae.getSource() == but8)
{ pinCode = pinCode.concat("8");
display.append("*");
PINCount++;
if (ae.getSource() == but9)
{ pinCode = pinCode.concat("9");
display.append("*");
PINCount++;
if (ae.getSource() == but0)
{ pinCode = pinCode.concat("0");
display.append("*");
PINCount++;
if (ae.getSource() == clearbut)
display.setText("Please enter your PIN number again \n");
pinCode = "";
PINCount = 0;
if (ae.getSource() == cancel)
display.setText("Welcome to HSBC Bank.\n Please enter your User Identification number \n");
state = 1;
pinCode ="";
PINCount = 0;
if (ae.getSource() == refillbut)
refill();
/// ************************ THIS BUTTON SENDS THE PIN & USER CODE OVER TO THE MAIN BANK*/
/// ************************ (LINE 152) */
if (ae.getSource() == enter)
// if(HSBCobj.checkPinAndUserId(pinCode, userCode))
// display.setText("How much would you like to withdraw \n");
// else
// display.setText("Your UserId and Pin code do not match");
if(PINCount ==4)
if(HSBCobj.checkPinAndUserId(userCode,pinCode))
display.setText("Enter the amount you \n want to withdraw \n ?");
PINCount=0;
else
display.setText("Your User Identification Number \n and PIN number do not match! \n please try again\n");
//*********** STATE 3 events*/
//*********** withdrawCash*/
public void withdrawCash(ActionEvent ae)
// if (ae.getSource() == but1)
// display.append("1");
/// withdrawAmount = withdrawAmount+1;
// pinCode = pinCode.concat("2");
// System.out.println("Withdrawal Amount = "+withdrawAmount);
if(ae.getSource( ) == but1)
withdrawAmount = withdrawAmount + "1";
display.setText(withdrawAmount);
if(ae.getSource( ) == but2)
withdrawAmount = withdrawAmount + "2";
display.setText(withdrawAmount);
if(ae.getSource( ) == but3)
withdrawAmount = withdrawAmount + "3";
display.setText(withdrawAmount);
if(ae.getSource( ) == but4)
withdrawAmount = withdrawAmount + "4";
display.setText(withdrawAmount);
if(ae.getSource( ) == but5)
withdrawAmount = withdrawAmount + "5";
display.setText(withdrawAmount);
if(ae.getSource( ) == but6)
withdrawAmount = withdrawAmount + "6";
display.setText(withdrawAmount);
if(ae.getSource( ) == but7)
withdrawAmount = withdrawAmount + "7";
display.setText(withdrawAmount);
if(ae.getSource( ) == but8)
withdrawAmount = withdrawAmount + "8";
display.setText(withdrawAmount);
if(ae.getSource( ) == but9)
withdrawAmount = withdrawAmount + "9";
display.setText(withdrawAmount);
if(ae.getSource( ) == but0)
withdrawAmount = withdrawAmount + "0";
display.setText(withdrawAmount);
if (ae.getSource() == fivepounds)
withdrawAmount = withdrawAmount + "5";
display.setText(withdrawAmount);
atmBalance();
if (ae.getSource() == tenpounds)
withdrawAmount = withdrawAmount + "10";
display.setText(withdrawAmount);
atmBalance();
if (ae.getSource() == twentypounds)
withdrawAmount = withdrawAmount + "20";
display.setText(withdrawAmount);
atmBalance();
if (ae.getSource() == fiftypounds)
withdrawAmount = withdrawAmount + "50";
display.setText(withdrawAmount);
atmBalance();
// if (ae.getSource() == tenpounds)
// display.append("10");
// withdrawAmount = 10;
// pinCode = pinCode.concat("2");
// System.out.println("10 pound button pressed");
// atmBalance();
if (ae.getSource() == enter)
atmBalance();
if (ae.getSource() == refillbut)
System.out.println("refill but pressed");
refill();
if (ae.getSource() == clearbut)
System.out.println("clear but pressed");
display.setText("Enter the amount you want to withdraw \n ?");
withdrawAmount="";
if (ae.getSource() == cancel)
display.setText("Welcome to HSBC Bank.\n Please enter your User Identification number \n");
withdrawAmount="";
pinCode ="";
PINCount = 0;
userCode = "";
userCodeCount = 0;
state = 1;
}// end withdraw cash input method
// checks balace of atm and withdraws cash. Also notifies onserver if atm balance is low
public void atmBalance()
String s = withdrawAmount;
int n = Integer.parseInt(s);
if ( atmBalance >= n)
atmBalance = atmBalance - n;
System.out.println("atm balance = "+ atmBalance);
display.setText("Thankyou for using HSBC. \nYou have withdrawn ?"+n);
if (atmBalance<40)
System.out.println("atm balance is less than 40 - notify HSBC" );
setChanged();
notifyObservers(this);
/// note the refil should send a message to the controller
// advising a refil is needed. The Bank will send an engineer
// out who will fill the atm up
}// end atmBalance method
/// note the refil should send a message to the controller
/// then th coontroller will send a message to this method to fill machine
/// (this is simulating a clerk filling atm)
public void refill()
System.out.println("in refill method" );
atmBalance = 200;
System.out.println("Atm has been refilled. Atm balance = " + atmBalance);
// setChanged();
// notifyObservers(this);
}// end refill method
// NOTE SURE ABOUT THIS - DO I USE THE UPDATE METHOD TO NOTIFY HSBC THAT ATM REQUIRES FILLING
// THIS IS THE WRONG PART OF THE PROGRAM (SHOULD BE IN HSBC) - IGNORE
public void update(Observable gm1, Object gameObj)
display.setText("Congratulations");
}//end update method
}// end Atm method
}// end Assignment2 clas
[\code]I wasn't trying to annoy anyone at all.
I'm new to java and have been told that using the observer/observable model is not considered basic java. So that is the only reason I posted it in this section. At the same time i feel that the bit I'm struggling with is actually basic - hence posting it in the basic section. I'm not sure if people of all abilities check all forums or just the ones they feel at at their standard.
So appologies if you've taken offence. -
VoFR PVC for data and PVC for voice with FRTS
Dear friends, It is my first experience configuring VoFR. My access rate is 128 Kbps and the CIR is 64 Kbps. I configured the router following some cisco examples using "vofr cisco" and FRTS into my "map-class" for voice. You can see my config in the attach file.
It works fine, the quality voice is good (2 calls)when the link is congested up to 100% through bi-directional ftp download.
However, I cannot get a speed upper to 64 Kbps. I understand that it is as FRTS works and it is necesary to QoS for voice. But I`m paying to my service provider a price for 128/64 and I never won`t get a speed greater than 64 Kbps.
How can I solve this problem without increase my CIR?. It has a additional cost.
I`m reading that some solution could be create two PVCs: one for voice and one for data. How should I configure them to get a burst traffic for data upper to 64 Kbps without affect my quality of voice?
Thank you for your suggestions.
Edwin.The following document has some explaination on the queueing on frame relay interfaces. This might help you understand how to configure different pvcs for voice and data and utilise the given cir fully.
Understanding Queueing on Frame Relay Router Interfaces
http://www.cisco.com/en/US/tech/tk543/tk544/technologies_tech_note09186a00800a4754.shtml
VoIP over Frame Relay with Quality of Service (Fragmentation, Traffic Shaping, LLQ / IP RTP Priority)
http://www.cisco.com/en/US/tech/tk652/tk698/technologies_configuration_example09186a0080094af9.shtml -
I am implementing QoS FRTS and LLQ on two 2600 routers one with 12.2(6) the other running 12.3(3a).
Everything seems to work fine except the ICA traffic, When I turn the QoS on the users are able to connect to the server but, the screen doesn't come up like its dropping the packets for it.
I am wondering if anyone has run into this. Or if anyone can help...
here are my policy maps and map class stuff.
router A
class-map match-all voip
match dscp ef
policy-map VoIP
class voip
priority 256
class class-default
fair-queue
interface Serial0/0
bandwidth 512
no ip address
encapsulation frame-relay
no ip route-cache
no ip mroute-cache
service-module t1 timeslots 1-12
cdp enable
frame-relay traffic-shaping
frame-relay lmi-type cisco
interface Serial0/0.100 point-to-point
description Frame-Relay to router B
ip address x.x.x.x 255.255.255.0
no ip route-cache
no ip mroute-cache
frame-relay class voip
frame-relay interface-dlci xxx
map-class frame-relay voip
frame-relay cir 512000
frame-relay bc 7680
frame-relay be 0
frame-relay mincir 512000
service-policy output VoIP
router B
class-map match-all voip
match ip dscp 46
policy-map VoIP
class voip
priority 256
class class-default
fair-queue
interface Serial0/0
no ip address
encapsulation frame-relay
service-module t1 timeslots 1-12
frame-relay traffic-shaping
frame-relay lmi-type cisco
interface Serial0/0.1 point-to-point
description frame-relay to router A
ip address x.x.x.x 255.255.255.0
frame-relay class voip
frame-relay interface-dlci xxx
map-class frame-relay voip
no frame-relay adaptive-shaping
frame-relay cir 512000
frame-relay bc 7680
frame-relay be 0
frame-relay mincir 512000
service-policy output VoIP
Thanks,
Stephen FlanaganOh one more thing the packets are marked dscp 46 comming into the router via a pbx
-
"frags delayed" counter incrementing for Voice PVC
Hi,
We are using VoFR between two Cisco 2610 using FXO\FXS Cards. It is a point-point link with two PVCs, one for Voice and one for Data.
I have implemented Traffic-Shaping and FRF. However when i do a "show frame pvc " command, i can see "frags delayed"counter incrementing for the Voice PVC, indiciating delay in sending packets and thus compromising Voice Quality.
1. Is it normal to have this counter increasing ? What is the acceptable percentage i.e "frags delayed \ total frags" ?
2. Is there anything i can do ? Would PVC Priority Queuing help ?
I need to be sure if PVC Priority is the solution, as we would have to do a Flash Upgrade to install the new software with this feature.
++++++++++++++++++++++++++
show frame pvc 103
PVC Statistics for interface Serial0/0 (Frame Relay DTE)
DLCI = 103, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial0/0.3
input pkts 373951 output pkts 374604 in bytes 11542352
out bytes 12245392 dropped pkts 0 in FECN pkts 0
in BECN pkts 0 out FECN pkts 0 out BECN pkts 0
in DE pkts 0 out DE pkts 0
out bcast pkts 5474 out bcast bytes 1571038
pvc create time 11w3d, last time pvc status changed 04:06:31
Service type VoFR-cisco
Voice Queueing Stats: 0/100/0 (size/max/dropped)
Current fair queue configuration:
Discard Dynamic Reserved
threshold queue count queue count
64 16 2
Output queue size 0/max total 600/drops 0
configured voice bandwidth 30000, used voice bandwidth 0
fragment type VoFR-cisco fragment size 320
cir 32000 bc 320 be 0 limit 40 interval 10
mincir 32000 byte increment 40 BECN response no
frags 374604 bytes 12261814 frags delayed 6501 bytes delayed 1609296
shaping inactive
traffic shaping drops 0
+++++++++++++++++++++++++++++++++++The following links explains the delay in voice traffic and gow to do traffic policing
VoIP over Frame Relay with QoS (Fragmentation, Traffic Shaping, LLQ / IP RTP Priority)
http://www.cisco.com/warp/public/788/voice-qos/voip-ov-fr-qos.html#15
Troubleshooting Output Drops with Priority Queueing
http://www.cisco.com/warp/public/105/priorityqueuedrops.html
Understanding Delay in Packet Voice Networks
http://www.cisco.com/warp/public/788/voip/delay-details.html
Voice QoS: ToS-CoS Mapping Via LLQ
http://www.cisco.com/warp/public/788/voice-qos/tos-cos.html
Frame Relay Traffic Shaping for VoIP and VoFR
http://www.cisco.com/warp/public/788/voip/fr_traffic.html -
I have a requirement to provide an MTP to allow FastStart on a H.323 gateway working with CCM4.1(3). Since all codecs used will be G.729a, I have tried to configure a resource on a 3845 router. It has no DSP's or voice modules, so I have tried to configure it as a software only resource but can't seem to get it to register with CCM.
I have followed guideline in "Configuring Enhanced Conferencing and Transcoding for Vice Gateway Routers" but don't seem to see registration attempts on CCM. Router shows sccp admin state UP, Software MTP Oper State: ACTIVE_IN_PROGRESS - Cause Code: TCP_CONN_ERROR.
Can anyone confirm that I am right in the assumption that I need no other hardware to do this successfully? Any ideas as to what is going wrong?Cutdown running config:
interface GigabitEthernet0/0
description *** Trunk to switch ***
no ip address
duplex full
speed 1000
media-type sfp
negotiation auto
interface GigabitEthernet0/0.5
description *** VOIP VLAN5 ***
encapsulation dot1Q 5
ip vrf forwarding cust58
ip address n.n.243.1 255.255.255.128
no snmp trap link-status
interface GigabitEthernet0/0.6
description *** Back Office VLAN 6 ***
encapsulation dot1Q 6
ip vrf forwarding BackOffice
ip address n.n.243.130 255.255.255.192
no snmp trap link-status
interface Serial1/0
no ip address
encapsulation frame-relay IETF
load-interval 30
dsu bandwidth 44210
frame-relay traffic-shaping
interface Serial1/0.271 point-to-point
description *** PVC for VOIP ***
ip vrf forwarding cust58
ip address n.n.100.58 255.255.255.252
frame-relay class VOIP-1024kbps
frame-relay interface-dlci 271
interface Serial1/0.272 point-to-point
description *** PVC for Backoffice ***
ip vrf forwarding BackOffice
ip address n.n.100.62 255.255.255.252
frame-relay interface-dlci 272
sccp local GigabitEthernet0/0.5
sccp ccm n.n.243.211 identifier 10 version 4.1
sccp ccm n.n.243.210 identifier 20 version 4.1
sccp codec g711alaw mask
sccp codec g729r8 mask
sccp codec g729br8 mask
sccp codec g729abr8 mask
sccp codec gsmfr mask
sccp codec gsmefr mask
sccp
sccp ccm group 999
associate ccm 10 priority 1
associate ccm 20 priority 2
associate profile 12 register MTP00169D43E1A0
signaling dscp af31
audio dscp ef
dspfarm profile 12 mtp
codec g729ar8
maximum sessions software 20
associate application SCCP
gateway
timer receive-rtp 600 -
If customer config cRTP in CE Router (to PE link), do the PE router need to do something or cRTP support only in pure point to point link (layer2)?
Hi,
cRTP should be configured for both sides, CE and PE in order that you can reach to a better voice quality. If it is a F/R VoIP configuration " frame-relay ip rtp header-compression" command line should be under the both sides of CE and PE sub-ifs. If It is leased-line, i mean hdlc encapsulation is on, directly put ip rtp header-compression for both sides. You may find an awful lots of information about cRTP if you give a search on CCO.
Regards, -
VOIP VLAN using 802.1q frames causing massive dropped packets
I have a MBP 2.16 connected via 1Gbps Ethernet to my corporate network. I also have a Cisco 7960 VOIP phone and it seems that 802.1q VOIP VLANs are causing the MBPro's Marvell Yukon Gigabit Ethernet adapter to drop 1326 packets out of 3559. It's absolutely unusable at my office, where my laptop is my main machine. I'm having to use my Compaq N610c to browse the Internet and read e-mail. Apple, please update the driver and save me!!!
I'd check a few things, are you sure the switch that you are connected to is really at 1000Base-T? If it is a Cisco switch I've seen all sorts of probems with auto-negotiation, I'd try to get your network administrator to "fix" the port at the speed you wish to run your network at (ie 100/1000) make sure the duplex is set correctly on the MacBook Pro (make sure it is set to the same as the switch). Also ensure that jumbo frames are enabled on the Cisco switch and make sure the MTU is set correctly for your network. This involves some tweaking of the ethernet interface in the network preferences of OS X.
Of course if there are indeed 802.1q problems with the onboard NIC then you could get your network administrator to disable .1q frames on the port that your MBP is connected to, you won't be able to use a "loop through" port on a VoIP phone if the phone relies on .1q trunking, so you'll need a port for the phone and a seperate .1q clean port for the MBP. -
Difrence between ... MPLS over Frame-Relay ATM
Hai all,
Sorry to ask very basic quiestion ..can some one tell what is the difrnce and advantage of MPLS over ATM and Frame-Relay ......pls provide me a better link ..for refrnce
Thanks in advance
LijeshMPLS over ATM or MPLS over Frame-Relay it's not good idea, because if you use cell-mode labeling, you find someone limitation at this technology. DLCI and VPI/VCI value at this protocols it's not have large space. If you know how operate cell-mode, try to look at just for sample bits length with DLCI value at Frame-Relay protocol or VPI/VCI value at ATM protocol⦠Of course you can use same cheat like VCI-merge, but I think it's not very good idea.
Building new network infrastructure at this protocols it's not good idea⦠It's good idea to fast implement MPLS technology in old network infrastructure build with this protocols (just for sample, you can linked ATM forwarding plane and MPLS forwarding plane (in this situation you can abandon to use fixed configuration VPI/VCI for IP network and can use benefits offered ATM technology with MPLS)), but not for new network infrastructure. If you need to offer services with this protocols, you can use Any Transport Over MPLS technology.
For more information look at this page - http://www.cisco.com/en/US/tech/tk436/tk798/tsd_technology_support_protocol_home.html -
Configuring CE-PE link on Frame Relay over ATM
Hi!
Need you guys expert opinion on how to configure configuring CE-PE link on Frame Relay over ATM. I am stump by this one because I never done it before. The CE is a Cisco 7206 with ATM PA and the parameters given to us is DLCI number in x/y format...isn't that the format for PVC. When asked, my SP contact says that it is indeed FR over ATM. Any of you guys who have experience to guide on this or point me in the right direction is most welcome. Thanks
Rgds
HelmeHello Helme,
ask your provider if they are doing FR to ATM service interworking.
In that case one side is configured for Frame-Relay and the other side for ATM
Service interworking is done by provider.
Verify that you have the same MTU on both sides and configure following ISP specifications
ATM uses two numbers to identify a PVC
int atm 4/0
no ip address
no shut
int atm 4/0.1 point-to-point
mtu 1500
ip address x.x.x.1 255.255.255.252
pvc x/y
enc aal5snap
protocol ip x.x.x.2 broadcast
this should be enough to have it working
on the other side configure or have a point-to-point subif configured on FR
see this example
http://www.cisco.com/en/US/tech/tk39/tk53/technologies_configuration_example09186a00801747e3.shtml
Hope to help
Giuseppe
Maybe you are looking for
-
3 Phones on current family plan - Can i Switch a phone(#) without penatly?
Here is the situation: My girlfriend pays for the Family Plan and has 3 phones on it (hers, her mom's, and her EX-boyfriend). I have an individual account which I am currently eligible to update my phone (which i wanted the Droid X), BUT my contract
-
BW Metadata is incomplete error while generating datasources using CTBW
The variant configuration datasources were created successfully in development system and BI side works fine in dev. We moved the VC datasources to our Quality system. Since our QA system client (500) is different from development (100) ECC system, I
-
Hi All, I have oracle 9.2.0.6 at my workplace.right now my database running in ARCHIVELOG MODE. I want to set it to NOARCHIVELOG MODE. can I do on the fly? in other way, Do I need to shutdown and restart database? Any help will be appreciated. Thanks
-
Business Transaction Events (BTE) for Post Incoming Payments F-28
Hi Experts, I have a request from a user to add a ship-to-party column inside the Post Incoming Pamyent F-28 for all the 4 tabs (standard, partial payment, res.items, withholding tax). Anyone did this by using BTE? What should be the event name to ad
-
I've read that there is a Firefox add-on, or plug-in, that will disable the maddening autoplay that has just recently started to occur when I play YouTube videos.. can I truly disable this thru Firefox?